Coding for KidsCoding for Kids
Творческие УровниИспытанияРуководство для Учителей
Голосовать за функции
Продвинутый курс разработки на 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, чтобы отобразить полный список рабочих дней проекта в календаре и завершить уровень.

Книга Кода