داریوش مهدی پور یقینی
داریوش مهدی پور یقینی
خواندن ۴ دقیقه·۲ سال پیش

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

سلام دوستان

با ادامه ی کتاب پایتون مقدماتی که به همراه دوست عزیزم جناب مهندس مهدی عباسپور شاهمرس نوشته و چاپ کردیم در خدمتتون هستیم.

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-28)

خروجی این قطعه کد، به شکل (13-29) خواهدبود.

شکل (13-29)
شکل (13-29)

13-7-2- توابع FirstWeekDay و SetFirstWeekDay

انتخاب اولین روز هفته، به عهده تابع ( ) firstweekday است. همان طوری که از قبل به آن اشاره‌‌شد، زمانی که برای اولین بار، از تقویم استفاده می‌‌شود، این مقدار، به طور پیش فرض، برابر صفر (روز دوشنبه) است. البته برای تنظیم آن می‌‌توان از ( ) setfirstweekday استفاده‌‌کرد. شکل (13-30)، کاربرد این دو تابع را در کنار هم نشان می‌‌دهد.

شکل (13-30)
شکل (13-30)

در این مثال، ابتدا مقدار صفر به عنوان اولین روز هفته، چاپ‌‌شده و بعد از تغییر آن به یک، در خروجی، عدد 1 را خواهیم‌‌داشت.

13-7-3- تابع WeekDay

با تعیین مقادیر سال، ماه (بین 1 تا 12) و روز (1 تا 31) در این تابع، می‌‌توانیم شماره‌‌ی روز هفته را که بین صفر تا 6 است، به‌‌دست آوریم. البته بایستی مقدار تعیین‌‌شده برای ماه، در محدوده‌‌ی آن باشد. برای مثال عدد 31 برای ماه فوریه قابل قبول نیست. بنابراین خروجی مثال شکل (3-31)، برابر 2 یعنی چهارشنبه خواهدبود.

شکل (13-31)
شکل (13-31)

13-7-4- توابع Month و PrMonth

همانند ( ) Calendar عمل می‌‌کند با این تفاوت که از آن‌‌ها برای چاپ ماه خاصی از سال استفاده می‌‌شود. البته به دلیل این که فقط یک ماه را در خروجی داریم، نیازی به جداسازی نبوده و خبری از آرگومان c در این‌‌توابع نیست. البته بایستی شماره‌‌ی ماه را به عنوان دومین آرگومان آن، وارد تابع کنیم. برای درک بهتر مطلب، به مثالی که در شکل (13-32) آورده‌‌ایم، توجه‌‌کنید.

شکل (13-32)
شکل (13-32)

خروجی این قطعه کد، به شکل (13-33) است.

شکل (13-33)
شکل (13-33)

13-7-5- تابع MonthCalendar

لیستی از لیست‌‌هایی از جنس اعداد صحیح را باز می‌‌گرداند. هر زیر‌‌لیست، نماینده یک هفته است. روزی از هفته‌‌ی اول و آخر که خارج از ماه باشد، مقدار صفر و بقیه آن‌‌ها مقادیر یک و بالاتر را خواهند‌‌داشت. برای توضیح بیشتر مثالی را در شکل (13-34) داریم.

شکل (13-34)
شکل (13-34)

با اجرای این قطعه کد، خروجی ما به شکل (13-35) می‌‌شود. اولین روز از هفته‌‌ی اول این ماه، جمعه است. بنابراین برای روز دوشنبه تا پنچ‌‌شنبه مقادیر صفر و برای جمعه تا یک‌‌شنبه مقادیر یک تا سه را خواهیم‌‌داشت.

شکل (13-35)
شکل (13-35)

13-7-6- تابع MonthRange

این تابع، دو عدد صحیح را برمی‌‌گرداند. اولین عدد، شماره‌‌ی اولین روز از هفته‌‌ی ماه و دومین عدد نشانگر تعداد روزهای ماه مدنظر است. نمونه‌‌ای از استفاده‌‌ی این تابع را در شکل (13-36) می‌‌بینید.

شکل (13-36)
شکل (13-36)

خروجی این مثال، به صورت (4, 31) خواهدبود که عدد 4، نشان‌‌گر روز جمعه (به عنوان شروع ماه) و عدد 31، تعداد روزهای ماه مارس را نشان می‌‌دهد.

13-7-7- تابع IsLeap

اگر شماره‌‌ی سالی که وارد تابع ( ) isleap می‌‌شود، از نوع کبیسه باشد، مقدار True و در غیر این صورت، مقدار False را برمی‌‌گرداند. شکل (13-37)، مثالی از این تابع را نشان می‌‌دهد. از آن جایی که سال 2019، کبیسه نیست، مقدار False را خواهیم‌‌داشت.

شکل (13-37)
شکل (13-37)

13-7-8- تابع LeapDays

برای شمارش تعداد سال‌‌های کبیسه در بازه‌‌ی سال‌‌های تعیین‌‌شده، از این تابع استفاده می‌‌شود. به عنوان مثال، در شکل (3-38)، تعداد سال‌‌های کبیسه از 2000 تا 2019 برابر 5 است.

شکل (13-38)
شکل (13-38)

13-7-9- تابع TimeGM

عکس تابع ( ) time.gmtime عمل می‌‌کند. به این صورت که، ورودی آن یک تاپل زمان و خروجی آن، عدد اعشاری است که تعداد ثانیه‌‌ها را از مبدا زمانی نشان می‌‌دهد. از آن جایی که در مورد تابع gmtime در مباحث قبلی توضیحات مفصلی ارائه شده‌‌است، از ذکر توضیح و مثال بیشتر خودداری می‌‌کنیم.

لازم به توضیح است که، با وجود مباحث زیادی که در مورد زمان داشتیم، چندین ماژول دیگر زمانی نیز وجود دارند که به علت عدم کاربرد زیاد ، فقط به ذکر نام datetime، pytz و dateutil اکتفا می‌‌کنیم.


در پست بعدی به توابع خواهیم پرداخت. با ما همراه باشین.

کتابکتاب خوانیآموزشپایتونمقدماتی
مدرس دانشگاه، مولف کتاب، برنامه نویس، عاشق هوش مصنوعی مخصوصا یادگیری عمیق، کتاب و مسافرت و گشت و گذار تو طبیعت مخصوصا بکرش رو هم خیلی دوست دارم.
شاید از این پست‌ها خوشتان بیاید