Coding for KidsCoding for Kids
Kreative NivåerUtfordringerLærerveiledning
Stem på funksjoner
Avansert Pythonutviklingskurs
Kapittel
>
Nivå

Streng- og tidsmoduler
Dato/Tid Modul

Mål

Juster poster og sett opp fraktdatoer for forsyninger ved hjelp av modulfunksjoner for dato og tid.

Det nedre gulvet i annexet til det nye byggeområdet er et lager som inneholder noen av de nylig leverte forsyningene som har blitt pakket og er klare til å sendes til områdene rundt den nye konstruksjonen. De må merkes med sine korrekte datoer og klokkeslett, og det må sikres at eventuelle etiketter som allerede er påført inneholder all relevant informasjon. For å gjøre dette kunne vi tatt oss tid til manuelt å skrive og formatere datoer og tid, men det finnes en mye raskere måte å gjøre dette på ved hjelp av modulen for dato og tid.

Modulen for dato og tid importeres ved å skrive import datetime, noe som låser opp en rekke kraftige funksjoner som lar deg lese og sette formaterte tider og datoer som du kan lagre i objekter. Du kan også bruke: from datetime import timezone, timedelta for å angi tidssoner. Følgende funksjoner blir tilgjengelige ved å importere modulen:

  • datetime.datetime(): Lar deg sette og lagre et tidspunkt etter eget valg, tar flere argumenter som følger: year, month, day, hour, minute, second, microsecond, timezone. Du trenger ikke å angi alle argumentene, bare de du ønsker å bruke.
  • datetime.datetime.now(): Returnerer din nåværende dato og tid slik den ville vises på en klokke.
  • datetime.datetime.date(): Returnerer kun datoen fra datetime, uten tid.
  • datetime.datetime.time(): Returnerer kun tiden fra datetime, uten dato.
  • datetime.datetime.timestamp(): Returnerer datetime sin tidsstempel som en UNIX-kode.
  • timezone(): Lar deg sette en tidssone for bruk med dine dato- og tidsargumenter.
  • datetime.strftime(): Lar deg hente ut spesifikk informasjon om dato og tid og formatere den slik du ønsker ved hjelp av spesifikke koder. For våre formål vil vi bruke følgende koder:
    • "%a" : Ukedag, forkortet
    • "%d" : Dagen i måneden
    • "%B" : Månedens navn, skrevet med stor bokstav
    • "%I" : Time, tolv-timers syklus
    • "%M" : Minutt
    • "%p" : Formiddag/ettermiddag, AM/PM
    • "%x" : Lokal datoformat
    • "%X" : Lokal tidsformat
    • "%j" : Dagen i året
    • "%U" : Uken i året
    • "%z" : UTC tidssone

For å starte, gå mot det lyse X-merket og vend deg mot disken, bruk funksjonen read() for å sjekke pakkedatoene for forsendelsene samt start- og sluttdatoer for prosjektene. Noter de start- og sluttdatoene som er oppgitt i dokumentet (måned/dag/år). De tre (3) første datapunktene skrevet i notatet samt tidssonen er forhåndsskrevet i kodeeditoren for å gjøre det enklere å bruke i senere funksjoner.

På dette samme området, opprett en variabel kalt today og lagre returverdien av datetime.datetime.now(). Bruk str() for å konvertere verdien til en streng slik at den er i et lesbart format, slik: today = str(datetime.datetime.now()). Bruk funksjonen display() for å skrive ned dagens dato i notatet, med dette blir datoen for fraktallokeringene satt og du kan begynne å legge til manglende datapunkter på de nødvendige områdene.

Gå til det gylne X-merket ved siden av disken, og her skal vi beregne og skrive ned antall dager dette prosjektet vil ta. Det er to variabler skrevet i editoren kalt start og end som lagrer datetime. Skriv ned start- og sluttdatoene du tidligere leste inn i de angitte feltene. Opprett en variabel kalt result og lagre resultatet av en subtraksjon mellom variablene end og start. Bruk funksjonen str() for å konvertere verdien til et lesbart strengformat, slik: result = str(end-start). Bruk funksjonen write() for å skrive ned variabelen result, for å markere hvor lang tid dette vil ta.

Herfra skal vi bevege oss til det gylne X-merket ved siden av den røde løperen og deretter ned til X-merkene ved siden av de røde løperkassene i venstre kolonne. Her vil vi legge til spesifikke deler av pakkedatoene som mangler på kassene ved hjelp av datetime(). I editoren vil det være en forhåndsskrevet dato tilordnet variabelen red_date, vi skal hente ut ulike biter med data og bruke det til å merke kassene.

For de røde løperne:

  • På det gylne X-merket, vend deg mot kassene og opprett en variabel kalt red_days og lagre i den datoen uten tid ved å bruke date() fra variabelen red_date, og konverter den med str(), slik: red_days = str(red_date.date()). Bruk funksjonen write() for å merke kassene med red_days.

  • På det lyse X-merket, vend deg mot kassene og opprett en variabel kalt red_time og lagre i den tiden uten dato ved å bruke time() fra variabelen red_date og konverter den med str(), slik: red_time = str(red_date.time()). Bruk funksjonen write() for å merke kassene med red_time.

  • På det mørke X-merket, vend deg mot kassene og opprett en variabel kalt red_timestamp og lagre i den tidsstempelet beregnet fra variabelen red_date, slik: red_timestamp = red_date.timestamp(). Bruk funksjonen write() for å merke kassene med red_timestamp.

Fortsett deretter med å gå til X-merkene foran de blå løperkassene. Som før er det en serie på tre (3) fargede X-merker, i dette tilfellet med referanse til den forhåndsskrevne variabelen blue_date for å fullføre etikettene. Gå gjennom kolonnen og bruk funksjonen strftime() for å legge til manglende elementer på fraktetikettene. I motsetning til de forrige funksjonene krever denne en spesifikk kode for å hente ut og formatere elementer fra mål-datoen. For eksempel, hvis vi ønsker å få ukedagen for variabelen blue_date vil du bruke koden "%a" med funksjonen strftime() slik: blue_date.strftime("%a").

For X-merkene ved siden av de blå løperkassene, bruk funksjonen strftime() med den spesifikke koden som kreves. Se gjennom den tidligere oppgitte listen med koder avhengig av kravene. For de blå løperne:

  • På det gylne X-merket, vend deg mot kassene og opprett en variabel kalt blue_weekday og lagre i den ukedagen ved hjelp av strftime() fra variabelen blue_date slik: blue_day = blue_date.strftime("%a"). Opprett en annen variabel kalt blue_day og lagre i den dagen i måneden ved hjelp av strftime() fra variabelen blue_date. Opprett en annen variabel kalt blue_month og lagre i den månedens navn, skrevet med stor bokstav, ved hjelp av strftime() fra variabelen blue_date. Sett inn variablene blue_weekday, blue_day og blue_month i den forhåndsskrevne funksjonen write().

  • På det lyse X-merket, vend deg mot kassene og opprett en variabel kalt blue_hour og lagre i den timen, tolv-timers syklus, ved hjelp av strftime() fra variabelen blue_date. Opprett en annen variabel kalt blue_minute og lagre i den minuttet ved hjelp av strftime() fra variabelen blue_date. Opprett en annen variabel kalt blue_meridian og lagre i den meridianen, AM/PM, ved hjelp av strftime() fra variabelen blue_date. Sett inn variablene blue_hour, blue_minute og blue_meridian i den forhåndsskrevne funksjonen write().

  • På det mørke X-merket, vend deg mot kassene og opprett en variabel kalt blue_local_date og lagre i den lokalt datoformat, ved hjelp av strftime() fra variabelen blue_date. Opprett en annen variabel kalt blue_local_time og lagre i den lokalt tidsformat ved hjelp av strftime() fra variabelen blue_date. Sett inn variablene blue_local_date, blue_local_time og blue_meridian i den forhåndsskrevne funksjonen display().

Til slutt skal vi gå til det gylne X-merket ved siden av den grønne løperen, og deretter ned til X-merkene ved siden av de grønne løperkassene i høyre kolonne. Her vil vi fortsette med å legge til spesifikke deler av pakkedatoene som mangler på kassene ved hjelp av strftime(). I editoren vil det være en forhåndsskrevet dato tilordnet variabelen green_date, vi skal hente ut ulike biter med data og bruke det til å merke kassene.

For de grønne løperne:

  • På det gylne X-merket, vend deg mot kassene og opprett en variabel kalt green_day og lagre i den dagen i året ved hjelp av strftime() fra variabelen green_date. Bruk funksjonen write() for å merke kassene med green_day.

  • På det lyse X-merket, vend deg mot kassene og opprett en variabel kalt green_week og lagre i den uken i året ved hjelp av strftime() fra variabelen green_date. Bruk funksjonen write() for å merke kassene med green_week.

  • På det mørke X-merket, vend deg mot kassene og opprett en variabel kalt green_timezone og lagre i den UTC tidssone ved hjelp av strftime() fra variabelen green_date. Bruk funksjonen write() for å merke kassene med green_timezone.

Når alle etiketter på X-merker ved siden av de fargede løperne er skrevet ned, vil nivået være fullført.

Kodebok