Aufgaben-Python/g10_comprehensions_datum_algorithmen/README.md

4.7 KiB

Kapitel G10: Comprehensions, Datum & Algorithmen 🚀📅

Schulabgleich: Thema 13.0 (Algorithmen & Datumsverarbeitung) & 15.1 (Comprehensions)

Herzlich willkommen zum krönenden Abschluss des Grundlagen-Lehrpfads! In diesem Kapitel lernst du drei essenzielle Werkzeuge kennen, die dich von einer Programmieranfängerin zu einer echten Python-Entwicklerin machen:

  1. List & Dict Comprehensions (Eleganter, kompakter Code in einer Zeile)
  2. Datum & Uhrzeit mit dem datetime-Modul (Rechnen mit Zeitspannen & Kalendern)
  3. Praktische Algorithmen (Suchen, Filtern, Sortieren mit key= und Min/Max-Findung)

⚡ 1. List Comprehensions: Das Schnellschienen-Fließband

Bisher hast du neue Listen oft mit einer leeren Liste und einer for-Schleife befüllt:

# 🐢 Der traditionelle Weg (4 Zeilen):
quadrate = []
for x in range(1, 6):
    if x % 2 == 0:
        quadrate.append(x ** 2)

Mit einer List Comprehension schreibst du das in einer einzigen, glasklaren Zeile:

# 🚀 Der Pythonic Weg mit List Comprehension:
quadrate = [x ** 2 for x in range(1, 6) if x % 2 == 0]
# Ergebnis: [4, 16]

Die Anatomie einer List Comprehension:

[  WAS_REIN_SOLL   for   VARIABLE   in   QUELLE   if   BEDINGUNG  ]
   (Ausdruck / Map)        (x)            (Liste)        (Filter)

Auch für Dictionaries: Dict Comprehensions

Genauso kannst du blitzschnell Dictionaries erzeugen:

woerter = ["Apfel", "Banane", "Erdbeere"]
wort_laengen = {w: len(w) for w in woerter}
# Ergebnis: {'Apfel': 5, 'Banane': 6, 'Erdbeere': 8}

📅 2. Datum & Uhrzeit mit dem datetime-Modul

In der echten Softwareentwicklung (z.B. bei Buchungs-Systemen, Online-Shops oder Kalendern) musst du ständig mit Zeitangaben rechnen. Python bringt dafür das mächtige Modul datetime mit.

from datetime import datetime, date, timedelta

# 1. Aktuelles Datum & Uhrzeit:
heute = date.today()          # z.B. 2026-08-29
jetzt = datetime.now()        # z.B. 2026-08-29 14:30:00

# 2. Rechnen mit Zeitspannen (timedelta):
in_einer_woche = heute + timedelta(days=7)
gestern = heute - timedelta(days=1)

# 3. Differenz zwischen zwei Daten berechnen:
silvester = date(2026, 12, 31)
tage_rest = (silvester - heute).days
print(f"Noch {tage_rest} Tage bis Silvester!")

Formatieren (strftime) & Einlesen (strptime)

  • strftime (String Format Time): Wandelt ein Datumsobjekt in einen formatierten Text um.
  • strptime (String Parse Time): Liest einen Text ein und baut daraus ein Datumsobjekt.
# Objekt -> Formatierter String:
datum = date(2026, 8, 29)
deutsch = datum.strftime("%d.%m.%Y")  # "29.08.2026"

# String -> Datumsobjekt:
text = "2026-12-24"
weihnachten = datetime.strptime(text, "%Y-%m-%d").date()
Platzhalter Bedeutung Beispiel
%d Tag des Monats (01 - 31) 29
%m Monat als Zahl (01 - 12) 08
%Y Jahr vierstellig 2026
%H Stunde (00 - 23) 14
%M Minute (00 - 59) 35
%S Sekunde (00 - 59) 09

🧠 3. Grundlegende Algorithmen: Suchen, Finden & Sortieren

A. Lineare Suche

Wenn du ein Element in einer Liste suchst, durchläufst du die Liste von vorne nach hinten:

def finde_person(personen, gesuchter_name):
    for person in personen:
        if person["name"] == gesuchter_name:
            return person
    return None

B. Maximum & Minimum mit Schlüssel (key=)

Wie findet man die älteste Person oder das teuerste Produkt?

gruppe = [
    {"name": "Anna", "alter": 25},
    {"name": "Ben", "alter": 32},
    {"name": "Clara", "alter": 19}
]

# Die Person mit dem höchsten Alter:
aelteste = max(gruppe, key=lambda person: person["alter"])
print("Älteste Person:", aelteste["name"])  # "Ben"

# Sortieren nach Alter aufsteigend:
sortiert = sorted(gruppe, key=lambda p: p["alter"])

🎯 Deine Aufgaben in aufgabe.py

Öffne die Datei g10_comprehensions_datum_algorithmen/aufgabe.py und löse die 5 TODOs:

  1. TODO 1 (quadratzahlen_gerade): Berechne die Quadrate aller geraden Zahlen mit einer List Comprehension.
  2. TODO 2 (filtriere_lange_woerter): Filtere Wörter heraus, deren Länge >= min_laenge ist.
  3. TODO 3 (tage_bis_datum): Berechne die Anzahl der Tage von heute bis zu einem Zieldatum (YYYY-MM-DD).
  4. TODO 4 (formatiere_deutsches_datum): Formatiere ein Datumsobjekt in das Format DD.MM.YYYY.
  5. TODO 5 (finde_aelteste_person): Finde in einer Liste von Personen-Dictionaries den Namen der ältesten Person.

Testen:

python3 test_aufgabe.py

Sobald alle Tests OK sind, hast du den gesamten Grundlagen-Pfad erfolgreich abgeschlossen! 🏆🎉