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

  1. Bestimmen Sie für jede Schleife, was sie tut: umformen, filtern, zusammenfassen, aufbauen - oder etwas anderes.
  2. Schreiben Sie die passende deklarative Fassung (Comprehension, sum, any, next, map/filter/reduce).
  3. Belegen Sie mit assert alt == neu, dass beide dasselbe liefern.
  4. Bei genau einer Schleife lautet die richtige Antwort: so lassen. Begründen Sie das mit den Kriterien von 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?


© Kevin Maurizi