فصل سیزدهم آموزش پایتون مقدماتی - تاریخ و زمان (بخش دوم)

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