Продвинутый курс разработки на 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, чтобы отобразить полный список рабочих дней проекта в календаре и завершить уровень.