فصل سیزدهم آموزش پایتون مقدماتی - تاریخ و زمان (بخش دوم) (انتشار: 1402/08/04)
با ادامه بحث استفاده از زمان در زبان پایتون در خدمت دوستان هستیم.
13-7- ماژول تقویم
این ماژول شامل توابعی برای کار با تقویم است. از جملهی آنها، میتوان به توابعی برای چاپ متن تقویم یک ماه ویا سال خاص اشارهکرد. همان گونه که حدس میزنید، به طور پیش فرض، دوشنبه به عنوان اولین و یکشنبه به عنوان آخرین روز تقویم درنظر گرفته میشود. شروع و پایان آن را میتوان با فراخوانی تابع ( ) calendar.setfirstweekday تغییرداد. در ادامه، لیستی از توابع موجود در ماژول تقویم را مورد بررسی قرار میدهیم.
13-7-1- توابع Calendar و PrCal
از این توابع برای چاپ چند خطی ماهانهی تقویم یک سال خاص استفاده میشود. از آن جایی که عملکرد هر دوی آنها یکسان است، به توضیح یکی از آنها میپردازیم. شمای کلی دستور، به صورت calendar.calendar(year, w, l, c) است که به طور خلاصه آرگومانهای مختلف آن را توضیح میدهیم.
- آرگومان year : شماره سالی که میخواهیم آن را چاپ کنیم.
- آرگومان w : عرض کاراکترهای مختلف تقویم ازجمله روزها را مشخص میکند.
- آرگومان l : نمایانگر تعداد فاصلهی سطرهای هفتههای یک ماه است.
- آرگومان c : تعیینکننده فاصلهی عرضی ماههای مختلف تقویم از هم است.
نمونهای از عملکرد این تابع را در شکل (13-28) میبینید.
خروجی این قطعه کد، به شکل (13-29) خواهدبود.
13-7-2- توابع FirstWeekDay و SetFirstWeekDay
انتخاب اولین روز هفته، به عهده تابع ( ) firstweekday است. همان طوری که از قبل به آن اشارهشد، زمانی که برای اولین بار، از تقویم استفاده میشود، این مقدار، به طور پیش فرض، برابر صفر (روز دوشنبه) است. البته برای تنظیم آن میتوان از ( ) setfirstweekday استفادهکرد. شکل (13-30)، کاربرد این دو تابع را در کنار هم نشان میدهد.
در این مثال، ابتدا مقدار صفر به عنوان اولین روز هفته، چاپشده و بعد از تغییر آن به یک، در خروجی، عدد 1 را خواهیمداشت.
13-7-3- تابع WeekDay
با تعیین مقادیر سال، ماه (بین 1 تا 12) و روز (1 تا 31) در این تابع، میتوانیم شمارهی روز هفته را که بین صفر تا 6 است، بهدست آوریم. البته بایستی مقدار تعیینشده برای ماه، در محدودهی آن باشد. برای مثال عدد 31 برای ماه فوریه قابل قبول نیست. بنابراین خروجی مثال شکل (3-31)، برابر 2 یعنی چهارشنبه خواهدبود.
13-7-4- توابع Month و PrMonth
همانند ( ) Calendar عمل میکند با این تفاوت که از آنها برای چاپ ماه خاصی از سال استفاده میشود. البته به دلیل این که فقط یک ماه را در خروجی داریم، نیازی به جداسازی نبوده و خبری از آرگومان c در اینتوابع نیست. البته بایستی شمارهی ماه را به عنوان دومین آرگومان آن، وارد تابع کنیم. برای درک بهتر مطلب، به مثالی که در شکل (13-32) آوردهایم، توجهکنید.
خروجی این قطعه کد، به شکل (13-33) است.
13-7-5- تابع MonthCalendar
لیستی از لیستهایی از جنس اعداد صحیح را باز میگرداند. هر زیرلیست، نماینده یک هفته است. روزی از هفتهی اول و آخر که خارج از ماه باشد، مقدار صفر و بقیه آنها مقادیر یک و بالاتر را خواهندداشت. برای توضیح بیشتر مثالی را در شکل (13-34) داریم.
با اجرای این قطعه کد، خروجی ما به شکل (13-35) میشود. اولین روز از هفتهی اول این ماه، جمعه است. بنابراین برای روز دوشنبه تا پنچشنبه مقادیر صفر و برای جمعه تا یکشنبه مقادیر یک تا سه را خواهیمداشت.
13-7-6- تابع MonthRange
این تابع، دو عدد صحیح را برمیگرداند. اولین عدد، شمارهی اولین روز از هفتهی ماه و دومین عدد نشانگر تعداد روزهای ماه مدنظر است. نمونهای از استفادهی این تابع را در شکل (13-36) میبینید.
خروجی این مثال، به صورت (4, 31) خواهدبود که عدد 4، نشانگر روز جمعه (به عنوان شروع ماه) و عدد 31، تعداد روزهای ماه مارس را نشان میدهد.
13-7-7- تابع IsLeap
اگر شمارهی سالی که وارد تابع ( ) isleap میشود، از نوع کبیسه باشد، مقدار True و در غیر این صورت، مقدار False را برمیگرداند. شکل (13-37)، مثالی از این تابع را نشان میدهد. از آن جایی که سال 2019، کبیسه نیست، مقدار False را خواهیمداشت.
13-7-8- تابع LeapDays
برای شمارش تعداد سالهای کبیسه در بازهی سالهای تعیینشده، از این تابع استفاده میشود. به عنوان مثال، در شکل (3-38)، تعداد سالهای کبیسه از 2000 تا 2019 برابر 5 است.
13-7-9- تابع TimeGM
عکس تابع ( ) time.gmtime عمل میکند. به این صورت که، ورودی آن یک تاپل زمان و خروجی آن، عدد اعشاری است که تعداد ثانیهها را از مبدا زمانی نشان میدهد. از آن جایی که در مورد تابع gmtime در مباحث قبلی توضیحات مفصلی ارائه شدهاست، از ذکر توضیح و مثال بیشتر خودداری میکنیم.
لازم به توضیح است که، با وجود مباحث زیادی که در مورد زمان داشتیم، چندین ماژول دیگر زمانی نیز وجود دارند که به علت عدم کاربرد زیاد ، فقط به ذکر نام datetime، pytz و dateutil اکتفا میکنیم.
در پست بعدی به توابع خواهیم پرداخت. با ما همراه باشین.
نظرات خوانندگان نوشته
نظری در این مورد دارید؟ خوشحال میشیم اون رو برامون ارسال کنید.