LU07.A05 - Schleife zur Pipeline
Bauen Sie fünf Schleifen deklarativ um - oder begründen Sie, warum die Schleife bleiben soll. Eine der fünf ist eine Falle.
Ausgangslage
eintraege = [ {"name": "meier", "punkte": 42, "aktiv": True}, {"name": "keller", "punkte": 17, "aktiv": False}, {"name": "suter", "punkte": 88, "aktiv": True}, {"name": "wyss", "punkte": 55, "aktiv": True}, ]
Schleife 1
namen = [] for e in eintraege: namen.append(e["name"].capitalize())
Schleife 2
gute = [] for e in eintraege: if e["aktiv"] and e["punkte"] >= 50: gute.append(e["name"])
Schleife 3
total = 0 for e in eintraege: if e["aktiv"]: total += e["punkte"]
Schleife 4
punkte_nach_name = {} for e in eintraege: punkte_nach_name[e["name"]] = e["punkte"]
Schleife 5
gefunden = None for e in eintraege: protokollieren(e) if e["punkte"] > 80: gefunden = e["name"] break
Detaillierte Aufgabenstellung
- Bestimmen Sie für jede Schleife, was sie tut: umformen, filtern, zusammenfassen, aufbauen - oder etwas anderes.
- Schreiben Sie die passende deklarative Fassung (Comprehension,
sum,any,next,map/filter/reduce). - Belegen Sie mit
assert alt == neu, dass beide dasselbe liefern. - Bei genau einer Schleife lautet die richtige Antwort: so lassen. Begründen Sie das mit den Kriterien von LU07d.
