- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel) - Kurswechsler Dropdown mit Direktnavigation - Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage - Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets - Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor - Saubere Bereinigung redundanter statischer Legacy-Sidebars |
||
|---|---|---|
| .. | ||
| aufgabe.py | ||
| index.html | ||
| musterloesung.py | ||
| README.md | ||
| test_aufgabe.py | ||
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:
- List & Dict Comprehensions (Eleganter, kompakter Code in einer Zeile)
- Datum & Uhrzeit mit dem
datetime-Modul (Rechnen mit Zeitspannen & Kalendern) - 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:
- TODO 1 (
quadratzahlen_gerade): Berechne die Quadrate aller geraden Zahlen mit einer List Comprehension. - TODO 2 (
filtriere_lange_woerter): Filtere Wörter heraus, deren Länge>= min_laengeist. - TODO 3 (
tage_bis_datum): Berechne die Anzahl der Tage von heute bis zu einem Zieldatum (YYYY-MM-DD). - TODO 4 (
formatiere_deutsches_datum): Formatiere ein Datumsobjekt in das FormatDD.MM.YYYY. - 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! 🏆🎉