Coding for KidsCoding for Kids
Kreativní ÚrovněVýzvyPrůvodce pro Učitele
Hlasovat pro funkce
Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň

Moduly řetězců a času
Modul Datum/Čas

Cíl

Upravte záznamy a nastavte termíny odeslání zásob pomocí funkcí modulu Datum a čas.

Nižší patro přístavby nové stavební oblasti je sklad obsahující některé z nedávno doručených zásob, které jsou zabalené a připravené k odeslání do oblastí kolem novostavby. Je třeba je označit správnými daty a časy a zajistit, aby všechny již nanesené štítky obsahovaly veškeré relevantní informace. Místo ručního psaní a formátování data a času je však k dispozici mnohem rychlejší způsob, a to pomocí modulu datum a čas.

Modul datum a čas se importuje pomocí zápisu import datetime, což zpřístupní řadu mocných funkcí, které vám umožní číst a nastavovat formátované časy a data, která můžete uložit do objektů. Můžete také použít: from datetime import timezone, timedelta pro nastavení časových zón. Importem tohoto modulu získáte přístup k následujícím funkcím:

  • datetime.datetime(): Umožňuje nastavit a uložit čas dle vašeho výběru, bere několik argumentů následovně: year, month, day, hour, minute, second, microsecond, timezone. Nemusíte zadávat všechny argumenty, ale pouze ty, které chcete použít.
  • datetime.datetime.now(): Vrací aktuální datum a čas, jak by byl zobrazen na hodinách.
  • datetime.datetime.date() : Vrací pouze datum z datetime, bez času.
  • datetime.datetime.time() : Vrací pouze čas z datetime, bez data.
  • datetime.datetime.timestamp() : Vrací časové razítko datetime jako UNIX kód.
  • timezone(): Umožňuje nastavit časovou zónu pro použití s argumenty data a času.
  • datetime.strftime(): Umožňuje extrahovat specifické informace o datu a čase a formátovat je dle vašeho přání pomocí specifických kódů. Pro naše účely budeme používat následující kódy:
    • "%a" : Krátký název dne v týdnu
    • "%d" : Den v měsíci
    • "%B" : Název měsíce, plně napsaný
    • "%I" : Hodina, 12-hodinový formát
    • "%M" : Minuta
    • "%p" : Odpoledne/dopoledne, AM/PM
    • "%x" : Místní formát data
    • "%X" : Místní formát času
    • "%j" : Den v roce
    • "%U" : Týden v roce
    • "%z" : UTC časová zóna

Na začátek se vydejte k lehké X značce a otočte se ke stolu, použijte funkci read() pro kontrolu dat balení zásilek, stejně jako začátku a konce projektů. Poznamenejte si počáteční a koncová data uvedená v dokumentu (měsíc/den/rok). První tři datové body uvedené v poznámce, stejně jako časová zóna, jsou již předvyplněny v editoru kódu pro snadné použití v následných funkcích.

Na stejném místě vytvořte proměnnou s názvem today a uložte do ní návratovou hodnotu datetime.datetime.now(). Použijte str() pro převedení hodnoty na řetězec, aby byl čitelný, například takto: today = str(datetime.datetime.now()). Použijte funkci display() pro zanesení dnešního data do poznámky, čímž se nastaví datum pro odeslání zásilek a můžete začít doplňovat chybějící datové body do potřebných oblastí.

Vydejte se k zlaté X značce vedle stolu, kde budeme počítat a zaznamenávat počet dnů, které tento projekt zabere. V editoru jsou již zapsány dvě proměnné s názvy start a end, které uchovávají datetime. Zapište do příslušných polí začáteční a koncová data, která jste si předtím přečetli. Vytvořte proměnnou s názvem result a uložte do ní výsledek odečtení proměnných end a start. Použijte funkci str() k převedení hodnoty do čitelného řetězcového formátu, například takto: result = str(end-start). Použijte funkci write() k zaznamenání proměnné result, čímž označíte, jak dlouho to potrvá.

Odtud se přesuneme k zlaté X značce vedle červeného koberce a dále k X značkám vedle beden červeného koberce v levém sloupci. Zde budeme přidávat specifické části dat balení, které chybí na bednách, pomocí datetime(). V editoru bude již předvyplněné datum přiřazené do proměnné red_date, ze kterého vytáhneme různé údaje a použijeme je k označení beden.

Pro červené koberce:

  • Na zlaté X značce, otočte se k bednám a vytvořte proměnnou red_days, do které uložíte datum bez času pomocí date() z proměnné red_date a převedete ho pomocí str(), například takto: red_days = str(red_date.date()). Použijte funkci write() pro označení beden pomocí red_days.

  • Na lehké X značce, otočte se k bednám a vytvořte proměnnou red_time, do které uložíte čas bez data pomocí time() z proměnné red_date a převedete ho pomocí str(), například takto: red_time = str(red_date.time()). Použijte funkci write() pro označení beden pomocí red_time.

  • Na tmavé X značce, otočte se k bednám a vytvořte proměnnou red_timestamp, do které uložíte časové razítko vypočítané z proměnné red_date, například takto: red_timestamp = red_date.timestamp(). Použijte funkci write() pro označení beden pomocí red_timestamp.

Následuje přesun k X značkám před bedenami na modrém koberci. Stejně jako dříve je zde řada tří (3) barevných X značek, v tomto případě odkazujících na předvyplněnou proměnnou blue_date pro dokončení štítků. Projděte sloupec a použijte funkci strftime() k přidání chybějících prvků do štítků zásilek. Na rozdíl od předchozích funkcí tato vyžaduje specifický kód pro extrakci a formátování prvků v cílovém datu. Například, pokud chceme získat den v týdnu pro proměnnou blue_date, použijeme kód "%a" s funkcí strftime() takto: blue_date.strftime("%a").

Pro X značky vedle beden na modrém koberci použijte funkci strftime() se specifickým požadovaným kódem. Prohlédněte si předchozí seznam kódů dle požadavků. Pro modré koberce:

  • Na zlaté X značce, otočte se k bednám a vytvořte proměnnou blue_weekday, do které uložíte den v týdnu pomocí strftime() z proměnné blue_date, například takto: blue_day = blue_date.strftime("%a"). Vytvořte další proměnnou s názvem blue_day a uložte do ní den v měsíci pomocí strftime() z proměnné blue_date. Vytvořte další proměnnou s názvem blue_month a uložte do ní název měsíce, napsaný celý, pomocí strftime() z proměnné blue_date. Vložte proměnné blue_weekday, blue_day a blue_month do předpřipravené funkce write().

  • Na lehké X značce, otočte se k bednám a vytvořte proměnnou blue_hour, do které uložíte hodinu, 12-hodinový formát, pomocí strftime() z proměnné blue_date. Vytvořte další proměnnou s názvem blue_minute a uložte do ní minutu pomocí strftime() z proměnné blue_date. Vytvořte další proměnnou s názvem blue_meridian a uložte do ní meridián, AM/PM, pomocí strftime() z proměnné blue_date. Vložte proměnné blue_hour, blue_minute a blue_meridian do předpřipravené funkce write().

  • Na tmavé X značce, otočte se k bednám a vytvořte proměnnou blue_local_date, do které uložíte místní formát data, pomocí strftime() z proměnné blue_date. Vytvořte další proměnnou s názvem blue_local_time a uložte do ní místní formát času pomocí strftime() z proměnné blue_date. Vložte proměnné blue_local_date, blue_local_time a blue_meridian do předpřipravené funkce display().

Nakonec se přesuneme k zlaté X značce vedle zeleného koberce a dále k X značkám vedle beden na zeleném koberci v pravém sloupci. Zde budeme pokračovat v přidávání specifických částí dat balení, které chybí na bednách, pomocí strftime(). V editoru bude přiřazeno předvyplněné datum do proměnné green_date, ze kterého vytáhneme různé údaje a použijeme je k označení beden.

Pro zelené koberce:

  • Na zlaté X značce, otočte se k bednám a vytvořte proměnnou green_day, do které uložíte den v roce pomocí strftime() z proměnné green_date. Použijte funkci write() k označení beden pomocí green_day.

  • Na lehké X značce, otočte se k bednám a vytvořte proměnnou green_week, do které uložíte týden v roce pomocí strftime() z proměnné green_date. Použijte funkci write() k označení beden pomocí green_week.

  • Na tmavé X značce, otočte se k bednám a vytvořte proměnnou green_timezone, do které uložíte UTC časovou zónu pomocí strftime() z proměnné green_date. Použijte funkci write() k označení beden pomocí green_timezone.

Jakmile budou všechny štítky na X značkách vedle barevných koberců zaznamenány, úroveň bude dokončena.

Kniha Kódu