====== 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 [[modul:m323:learningunits:lu07:funktionalesrefactoring|LU07d]].
==== Zusatz ====
Schreiben Sie Schleife 3 zusätzlich mit ''reduce'' und beurteilen Sie: Welche der drei Fassungen würden Sie in Ihr Projekt übernehmen und warum?
----
{{tag>M323-LU07 M323-D1I}}
[[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi