====== 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