Курс по усъвършенствано разработване с 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, за да покажете пълния списък с работните дни на проекта в календара, за да завършите нивото.