Kapitel G10 • Schulabgleich 13.0 & 15.1

Comprehensions, Datum & Algorithmen 🚀📅

Lerne, wie du elegante Einzeiler schreibst, mit Zeitspannen rechnest und grundlegende Such- und Filter-Algorithmen meisterst.

📂 Dateien dieser Einheit:
💻 In Web-IDE öffnen → 📄 aufgabe.py (Startercode) 🧪 test_aufgabe.py (Tests) 💡 musterloesung.py (Lösung) 📖 README.md

1. List Comprehensions: Das Schnellschienen-Fließband

In Python musst du nicht jedes Mal eine leere Liste erstellen und eine 4-zeilige for-Schleife mit .append() schreiben. Mit List Comprehensions erstellst und filterst du Listen in einer einzigen, eleganten Zeile!

🏭 Die Fließband- & Filtersieb-Analogie:

Stell dir ein automatisiertes Fließband in einer Manufaktur vor:

  • Die Rohstoffe (Elemente aus der Ausgangsliste) laufen über das Band (for x in liste).
  • Ein Sensor sortiert unpassende Teile sofort aus (if x % 2 == 0).
  • Am Ende wird das Teil direkt veredelt oder berechnet (x ** 2) und fällt fertig verpackt in die neue Liste!
Vergleich: Traditionelle Schleife vs. List Comprehension
# 🐢 Vorher: Traditionelle for-Schleife (4 Zeilen)
gerade_quadrate = []
for x in range(1, 7):
    if x % 2 == 0:
        gerade_quadrate.append(x ** 2)

# 🚀 Nachher: Elegante List Comprehension (1 Zeile!)
gerade_quadrate = [x ** 2 for x in range(1, 7) if x % 2 == 0]
print(gerade_quadrate)  # [4, 16, 36]

Dict Comprehensions: Dictionaries on the fly

Dict Comprehension Syntax
woerter = ["Python", "Code", "Entwicklung"]
laengen = {w: len(w) for w in woerter}
print(laengen)  # {'Python': 6, 'Code': 4, 'Entwicklung': 11}

2. Datum, Uhrzeit & Zeitspannen (Das datetime-Modul)

Egal ob Ticket-Buchung, Geburtstags-Erinnerung oder Spielstand-Speicherung: Zeitberechnungen gehören zum Alltag jeder Programmiererin.

🗓️ Die Kalender- & Stoppuhr-Analogie:
  • date & datetime sind wie dein Kalender: Ein festes Datum wie der 24.12.2026.
  • timedelta ist wie eine Zeitspanne (z.B. "+ 14 Tage" oder "- 3 Stunden").
Python: Rechnen mit datetime & timedelta
from datetime import datetime, date, timedelta

# 1. Heute ermitteln:
heute = date.today()

# 2. Text in Datum parsen (.strptime):
urlaub = datetime.strptime("2026-07-15", "%Y-%m-%d").date()

# 3. Differenz in Tagen berechnen:
tage_bis_urlaub = (urlaub - heute).days
print(f"Noch {tage_bis_urlaub} Tage bis zum Urlaub!")

# 4. Deutsches Datumsformat ausgeben (.strftime):
print(urlaub.strftime("%d.%m.%Y"))  # Ausgabe: "15.07.2026"

Wichtige Formatierungs-Kürzel

Kürzel Bedeutung Beispiel
%d Tag im Monat mit führender Null (01..31) 05 oder 29
%m Monat mit führender Null (01..12) 08
%Y Vierstelliges Jahr 2026

3. Grundlegende Algorithmen: Min/Max, Suchen & Sortieren

Ein Algorithmus ist eine präzise Handlungsanweisung zur Lösung eines Problems. Hier lernst du die wichtigsten Muster kennen:

Maximum suchen mit key=
personen = [
    {"name": "Anna", "alter": 25},
    {"name": "Ben", "alter": 32},
    {"name": "Clara", "alter": 19}
]

# Die älteste Person mit max() und Lambda-Schlüssel finden:
aelteste = max(personen, key=lambda p: p["alter"])
print(f"Älteste Person: {aelteste['name']} ({aelteste['alter']} Jahre)")
# Ausgabe: Älteste Person: Ben (32 Jahre)

4. 🎯 Deine Aufgaben in aufgabe.py

Öffne die Datei aufgabe.py und bearbeite die folgenden 5 Aufgaben:

💡 Lösungshinweise (Aufklappen bei Bedarf)

🔍 Tipp zu TODO 1 & 2 (List Comprehensions)
# TODO 1:
return [x ** 2 for x in zahlen if x % 2 == 0]

# TODO 2:
return [w for w in woerter if len(w) >= min_laenge]
🔍 Tipp zu TODO 3 (Datum einlesen & subtrahieren)
ziel = datetime.strptime(ziel_datum_str, "%Y-%m-%d").date()
heute = date.today()
return (ziel - heute).days

5. 🧪 Lösung überprüfen & Kursabschluss

Führe den Test im Terminal aus:

Terminal
python3 test_aufgabe.py