Coding for KidsCoding for Kids
Креативни НиваПредизвикателстваРъководство за Учители
Гласувайте за функции
Курс по усъвършенствано разработване с Python
Глава
>
Ниво

Модули за низове и време
Модул за дата/време

Цел

Настройте записите и определете датите за доставка на стоките, използвайки функциите на модула Date & Time.

На по-ниския етаж на крилото на новозградената зона се намира склад, съдържащ някои от наскоро доставените консумативи, които са опаковани и готови за изпращане към районите около новата постройка. Те трябва да бъдат етикетирани с правилните дати и часове, като също така се уверите, че всички вече нанесени етикети съдържат цялата необходима информация. За да направим това, можем да отделим време за ръчно записване и форматиране на датите и часовете, но има много по-бърз начин да постигнем резултата, използвайки модула за дата и час.

Модулът за дата и час се импортира с писането на import datetime, което отключва серия от мощни функции, позволяващи да четете и задавате форматирани часове и дати, които можете да съхранявате в обекти. Можете също да използвате: from datetime import timezone, timedelta, за да зададете часови зони. Следните функции се активират при импортиране на модула:

  • datetime.datetime(): Позволява ви да зададете и съхраните избран от вас час; приема няколко аргумента както следва: year, month, day, hour, minute, second, microsecond, timezone. Не е необходимо да въведете всички аргументи, а само тези, които желаете да използвате.
  • datetime.datetime.now(): Връща текущата дата и час, както биха се показали на часовник.
  • datetime.datetime.date(): Връща само датата от datetime, без включен час.
  • datetime.datetime.time(): Връща само часа от datetime, без включена дата.
  • datetime.datetime.timestamp(): Връща времевия печат на datetime като UNIX код.
  • timezone(): Позволява ви да зададете часова зона за използване с вашите аргументи за дата и час.
  • datetime.strftime(): Позволява ви да извлечете специфична информация за датата и часа и да я форматирате по ваше усмотрение с помощта на конкретни кодове. За нашите цели ще използваме следните кодове:
    • "%a": Ден от седмицата (съкратено)
    • "%d": Ден от месеца
    • "%B": Име на месеца (напълно изписано)
    • "%I": Час (12-часов цикъл)
    • "%M": Минута
    • "%p": Период (AM/PM)
    • "%x": Локален формат на датата
    • "%X": Локален формат на часа
    • "%j": Ден от годината
    • "%U": Седмица от годината
    • "%z": Часова зона UTC

За начало, отидете до светлия X знак и обърнете се към бюрото. Използвайте функцията read() за да проверите датите на опаковане за пратките, както и датите за начало и край на проектите. Обърнете внимание на посочените в документа дати за начало и край (месец/ден/година). Първите три (3) данни, написани в мемото, както и часовата зона са предварително въведени в редактора за улеснение в по-късните функции.

В същото пространство, създайте променлива с име today и съхранете върнатата стойност от datetime.datetime.now(). Използвайте str() за да конвертирате стойността в низ, с цел да бъде четима, както следва: today = str(datetime.datetime.now()). Използвайте функцията display() за да запишете датата от днес в мемото; по този начин датата за разпределение на пратките се задава и можете да започнете да добавяте липсващите данни в необходимите области.

Отидете до златния X знак до бюрото, където ще изчислим и запишем броя на дните, необходими за изпълнение на проекта. В редактора има две променливи с имена start и end, които съхраняват datetime. Запишете датите за начало и край, които предварително сте прочели, в предоставените полета. Създайте променлива с име result и съхранете резултата от изваждането на променливите end и start. Използвайте функцията str() за да конвертирате стойността в четим низ, както следва: result = str(end-start). Използвайте функцията write() за да запишете променливата result и да отбележите колко време ще отнеме това.

Оттук ще преминем към златния X знак до червеното килимче и след това към X маркираните до кутиите с червен килим в лявата колона. Тук ще добавяме специфични части от датите на опаковане, които липсват от кутиите, използвайки datetime(). В редактора ще има предварително зададена дата, присвоена към променливата red_date, от която ще извлечем различни части от информацията и ще я използваме за етикетиране на кутиите.

За червените килими:

  • На златния X знак, обърнете се към кутиите и създайте променлива с име red_days, в която съхранете датата без час, използвайки date() от променливата red_date и я конвертирайте с str(), както следва: red_days = str(red_date.date()). Използвайте функцията write() за да етикетирате кутиите с red_days.
  • На светлия X знак, обърнете се към кутиите и създайте променлива с име red_time, в която съхранете часа без дата, използвайки time() от променливата red_date и я конвертирайте с str(), както следва: red_time = str(red_date.time()). Използвайте функцията write() за да етикетирате кутиите с red_time.
  • На тъмния X знак, обърнете се към кутиите и създайте променлива с име red_timestamp, в която съхранете времевия печат, изчислен от променливата red_date, както следва: red_timestamp = red_date.timestamp(). Използвайте функцията write() за да етикетирате кутиите с red_timestamp.

След това преминете към X маркираните пред кутиите със син килим. Както преди, има серия от три (3) цветни X знака, които в този случай препращат към предварително зададената променлива blue_date за завършване на етикетирането. Прекарайте през колоната и използвайте функцията strftime() за да добавите липсващите елементи към етикетите на пратките. За разлика от предишните функции, тази изисква специфичен код за извличане и форматиране на елементите от целевата дата. Например, ако искаме да получим деня от седмицата за променливата blue_date, ще използвате кода "%a" с функцията strftime(), както следва: blue_date.strftime("%a").

За X маркираните до кутиите със син килим, използвайте функцията strftime() със специфичния необходим код. Прегледайте предварително изброения списък с кодове в зависимост от изискванията.

За сините килими:

  • На златния X знак, обърнете се към кутиите и създайте променлива с име blue_weekday, в която съхранете деня от седмицата, използвайки strftime() от променливата blue_date, както следва: blue_day = blue_date.strftime("%a"). Създайте друга променлива с име blue_day и съхранете деня от месеца, използвайки strftime() от променливата blue_date. Създайте още една променлива с име blue_month и съхранете името на месеца, написано изцяло, използвайки strftime() от променливата blue_date. Въведете променливите blue_weekday, blue_day и blue_month в предварително зададената функция write().
  • На светлия X знак, обърнете се към кутиите и създайте променлива с име blue_hour, в която съхранете часа (12-часов цикъл), използвайки strftime() от променливата blue_date. Създайте друга променлива с име blue_minute и съхранете минутата, използвайки strftime() от променливата blue_date. Създайте още една променлива с име blue_meridian и съхранете AM/PM, използвайки strftime() от променливата blue_date. Въведете променливите blue_hour, blue_minute и blue_meridian в предварително зададената функция write().
  • На тъмния X знак, обърнете се към кутиите и създайте променлива с име blue_local_date, в която съхранете локалния формат на датата, използвайки strftime() от променливата blue_date. Създайте друга променлива с име blue_local_time и съхранете локалния формат на часа, използвайки strftime() от променливата blue_date. Въведете променливите blue_local_date, blue_local_time и blue_meridian в предварително зададената функция display().

Накрая, ще преминем към златния X знак до зеленото килимче и ще се насочим към X маркираните до кутиите със зелен килим в дясната колона. Тук ще продължим да добавяме специфични части от датите на опаковане, които липсват от кутиите, използвайки strftime(). В редактора ще има предварително зададена дата, присвоена към променливата green_date, от която ще извлечем различни части от информацията и ще я използваме за етикетиране на кутиите.

За зелените килими:

  • На златния X знак, обърнете се към кутиите и създайте променлива с име green_day, в която съхранете деня от годината, използвайки strftime() от променливата green_date. Използвайте функцията write() за да етикетирате кутиите с green_day.
  • На светлия X знак, обърнете се към кутиите и създайте променлива с име green_week, в която съхранете седмицата от годината, използвайки strftime() от променливата green_date. Използвайте функцията write() за да етикетирате кутиите с green_week.
  • На тъмния X знак, обърнете се към кутиите и създайте променлива с име green_timezone, в която съхранете UTC часовата зона, използвайки strftime() от променливата green_date. Използвайте функцията write() за да етикетирате кутиите с green_timezone.

След като всички етикети на X маркираните до цветовите килими бъдат записани, нивото ще бъде завършено.

Книга с Код