Поглиблений курс розробки на Python
Розділ
>
Рівень
Модулі рядків і часу
Модуль календаря
Мета
Перевірте календар і встановіть дати для деяких строків доставки, використовуючи модуль Calendar.
Прибуло декілька відправлень, і потрібно дотримуватися розкладів, щоб їх можна було розподілити навколо нового будівництва ферми. Раніше ми використовували модуль date для налаштування транспортних етикеток, а зараз ми встановимо розклади, використовуючи модуль calendar. Для того, щоб скористатися класами та функціями цього модуля, використовуйте import calendar для імпорту всіх відповідних матеріалів.
Для наших цілей ми будемо використовувати наступні функції модуля calendar:
calendar.calendar():Відображає повний календар року, приймає один (1) аргумент – рік, який ви хочете відобразити.calendar.month():Відображає календар для одного місяця, приймає два (2) аргументи – рік та місяць.calendar.isleap():Перевіряє, чи є рік високосним, приймає один (1) аргумент – рік для перевірки.calendar.leapdays():Перевіряє кількість високосних днів, накопичених за роками, приймає два (2) аргументи – роки, що охоплюють період, який ви хочете перевірити.itermonthdays():Використовує класCalendar(), ітерується через усі дні місяця, приймає два аргументи – рік та місяць.itermonthdates():Використовує класCalendar(), ітерується через усі дати місяця, приймає два аргументи – рік та місяць.monthdayscalendar():Використовує класCalendar(), ітерується через усі тижні місяця, приймає два аргументи – рік та місяць. Зберігає дані у вкладеному списку.monthdays2calendar():Те ж саме, що і попередня функція, але зберігає тижні та дні разом у двовимірному списку.
Для початку пройдіть до золотого знаку X і перевірте календар, створіть змінну з ім’ям cal і збережіть у неї значення функції calendar.calendar(), додаючи рік 2026 як аргумент, ось так: cal = calendar.calendar(2026). Використовуйте функцію display() для відображення змінної cal, яку ви щойно налаштували.
Після перевірки та відображення календаря перейдіть до світлого знаку X і перевірте електронну таблицю на столі. Використовуйте функцію read() для перевірки записки з інформацією про запланований місяць постачання. Створіть дві змінні, одну з ім’ям year і одну з ім’ям month, і заповніть їх отриманою інформацією.
Створіть змінну з ім’ям calendar_month і збережіть у неї значення функції calendar.month(), використовуючи змінні year і month як аргументи. Використовуйте функцію display() для відображення календаря місяця, який буде використаний для встановлення розкладів доставки.
Пройдіть до темного знаку X через зелений килим, тут ми запишемо деякі дані, щоб переконатися, що розклади не зміщені. Створіть дві змінні: одну з ім’ям leap_year і одну з ім’ям leap_days. Для змінної leap_year збережіть результат функції calendar.isleap() з аргументом 2026. Це дозволить вам перевірити, чи є поточний рік проекту високосним. Для змінної leap_days збережіть значення функції calendar.leapdays(), додавши значення 2020 та 2027 як аргументи. Це підтверджує кількість високосних днів, що відбулися протягом всієї тривалості проекту. Використовуйте попередньо написану функцію write() та додайте leap_year і leap_days, щоб зафіксувати дані.
Пройдіть до темного знаку X через червоний килим і зверніться до столу, тут ми складемо розклад місяця. Створіть змінну з ім’ям date і збережіть у неї значення calendar.Calendar(), що створює об’єкт класу для подальшого використання. Створіть ще одну змінну з ім’ям day_roster і присвойте їй пустий рядок, ось так: day_roster = "".
В редакторі попередньо написаний цикл for, який ітерується через календар і окреслює дати. Використовуйте функцію itermonthdays() і додайте змінні year і month, які ви створили раніше, як аргументи. Додайте відсутні елементи за потреби для накопичення розкладу.
for day in dates.itermonthdays(-insert value-, -insert value-): entry = "Day: %s \n" % (day) day_roster += entry
Після налаштування циклу повторіть його, проте замініть функцію itermonthdays() на itermonthdates() і використовуйте змінні year і month як аргументи. Для змінної entry запишіть дані таким чином: entry = "%s \n" % (day). Це дозволить отримати повні дати тривалості проекту. Використовуйте попередньо написану функцію display() із змінною day_roster, щоб відобразити повний розклад днів проекту в календарі.
Пройдіть до темного знаку X через синій килим і зверніть увагу на записку, тут ми налаштовуємо каталоги тижнів для подальшої роботи над проектом, що записані у списках. Створіть змінну з ім’ям weeks і збережіть у неї значення calendar.Calendar(), що створює об’єкт класу для використання функцій. Змініть значення змінної month на 7, щоб перейти до розкладу, з яким ми працюємо, ось так: month = 7.
Створіть змінну з ім’ям week_roster і присвойте їй пустий рядок, ось так: week_roster = "". В редакторі попередньо написаний цикл for, який ітерується через календар і окреслює будні. Використовуйте функцію monthdayscalendar() і додайте змінні year і month, які ви створили раніше, як аргументи. Додайте відсутні елементи за потреби для накопичення розкладу.
for day in weeks.monthdayscalendar(-insert value-, -insert value-): entry = "%s \n" % (day) week_roster += entry
Після налаштування циклу повторіть його, проте замініть функцію monthdayscalendar() на monthdays2calendar() і використовуйте змінні year і month як аргументи. Це дозволить отримати повні дати тривалості проекту. Використовуйте попередньо написану функцію display() із змінною week_roster, щоб відобразити повний розклад робочих днів проекту в календарі для завершення рівня.