Übungen Thema 4

Aufgaben

Augaben zum Thema.

Aufgabe 4.1: Datum oder Zeit ausgeben

Erstellen Sie eine Variable heute und speichern den heutigen Tag in dieser Variable. Geben Sie den Inhalt der Variable aus.

Erstellen Sie eine Variable jetzt und speichern Sie die aktuelle Uhrzeit in dieser Variable. Geben Sie nur die Uhrzeit aus.

HeuteJetzt.pyopen in new window

Aufgabe 4.2: Tage seit Geburt

Entwickeln Sie eine Programm, dass nach ihrem Geburtsdatum im Format '%d.%m.%Y' fragt.

from datetime import datetime, date
geburtsdatum = input('Geben Sie ihr Geburtsdatum (DD.MM.YYYY) ein: ')

Berechne Sie die Anzahl Tage, die seit dem Geburtsdatum vergangen sind und geben Sie diese aus.

TIP

Damit die Differenz berechent werden kann, muss das heutige Datum und das Geburtsdatum im Format ohne Zeit sein.

differenz = date.today() - geburtsdatum.date()

Tage seit Geburt.pyopen in new window

Aufgabe 4.3: Tage bis Geburtstag

Erweitern das Programme mit einer Berechnung der Anzahl Tage bis zum nächsten Geburstag aus.

Geben Sie sie folgenden Text aus: 'Sie haben in {differenz.days} Tagen an einem {geburtstag.strftime("%A")} Geburtstag.'

Tage bis Geburtstag.pyopen in new window

Aufgabe 4.4: Schnellschreiber

Schreiben Sie ein Programm, dass diesen Text ausgibt:

Am 19. Januar 2038 haben 32-Bit Computer ein Problem.

Anschliessend soll man den Text wieder eintippen.

Vergleichen Sie den originalen String und die Eingabe. Geben Sie den Vergleichswert (Boolean) aus.

Messen Sie die Zeit der ganzen Programmausführung und geben Sie diese in Sekunden aus.

ℹ️ Ausgabe heisst immer print() und Eingabe immer input()

Schnellschreiber .pyopen in new window

Wiederholungsfragen

W1: Geben Sie das heutige Datum in der Form Montag, 31. 12. aus, also mit Wochentag, aber ohne Jahreszahl.

Die folgende Lösung erfüllt die Fragestellung weitgehend. Ein wenig störend ist aber die Null beim Monat (also 06. anstelle von 6.).
from datetime import datetime  
import locale    
now = datetime.now()  
locale.setlocale(locale.LC_ALL, 'de_DE.utf8')  # Linux    
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8') # macOS  
locale.setlocale(locale.LC_ALL, 'german')      # Windows  
print(now.strftime('%A, %d.%m.'))  
  Mittwoch, 27.06.
Python sieht keinen Formatcode für die Monatszahl ohne führende Null vor. Um diesen Mangel zu beheben, können Sie .0 durch . ersetzen:
s=now.strftime('%A, %d.%m.')  
print(s.replace('.0', '.'))  
  Mittwoch, 27.6.

W2: Ein Kinofilm beginnt um 19:30 Uhr und dauert 132 Minuten. Wann ist die Vorstellung zu Ende?

Python kann zu time-Objekten keine Zeitspannen addieren. Deswegen bildet das folgende Script aus dem time-Objekt (Variable start) zuerst ein entsprechendes datetime-Objekt (Variable starttoday) und führt die Zeitrechnung dann durch:
from datetime import datetime, time  
start = time(19, 30)                                       
starttoday = datetime.combine(datetime.today(), start)     
length = timedelta(minutes=132)  
end = starttoday + length  
print(end.time())  
  21:42:00

W3: Ermitteln Sie, wie viele Sekunden seit Mitternacht vergangen sind.

Um die Anzahl der Sekunden seit Mitternacht zu berechnen, wird in midnight ein neues datetime-Objekt gespeichert, das sich aus dem aktuellen Datum ohne Stunden, Minuten und Sekunden zusammensetzt. Damit kann die Differenz zur aktuellen Zeit berechnet werden.
from datetime import datetime, timedelta  
now = datetime.now()  
midnight = datetime(now.year, now.month, now.day)  
sincemidnight = now - midnight  
print('Uhrzeit: ', now.time())  
  Uhrzeit:  20:28:36.657155  
print('Sekunden seit Mitternacht:', sincemidnight.seconds)  
  Sekunden seit Mitternacht: 73716