Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| modul:m323:learningunits:lu01:loesungen:spaghetticode [2026/08/18 10:17] – Codedarstellung in Tabelle und Typografie korrigiert admin | modul:m323:learningunits:lu01:loesungen:spaghetticode [2026/08/18 11:11] (aktuell) – Musterloesung via gh-Import aus dem solution-Branch admin | ||
|---|---|---|---|
| Zeile 14: | Zeile 14: | ||
| ===== 2. Musterlösung ===== | ===== 2. Musterlösung ===== | ||
| - | <code python> | + | ~~NOCACHE~~ |
| - | bestellungen | + | === main.py === |
| - | {" | + | {{gh>https://github.com/ |
| - | {" | + | |
| - | | + | |
| - | {" | + | |
| - | {" | + | |
| - | ] | + | |
| + | Übrig bleiben genau die drei Grundstrukturen: | ||
| - | def umsatz_alt(bestellungen): | + | ===== 3. Was durch den Umbau verschwunden ist ===== |
| - | """ | + | |
| - | i = 0 | + | |
| - | fertig | + | |
| - | total = 0 | + | |
| - | while not fertig: | + | |
| - | if i >= len(bestellungen): | + | |
| - | fertig | + | |
| - | else: | + | |
| - | b = bestellungen[i] | + | |
| - | if b[" | + | |
| - | i = i + 1 | + | |
| - | continue | + | |
| - | else: | + | |
| - | if b[" | + | |
| - | i = i + 1 | + | |
| - | continue | + | |
| - | else: | + | |
| - | total = total + b[" | + | |
| - | i = i + 1 | + | |
| - | return total | + | |
| + | * **Der Index '' | ||
| + | * **Die Flagge '' | ||
| + | * **Die Sprünge.** Ohne '' | ||
| + | * **Zwei Verschachtelungsebenen.** Die beiden Bedingungen sind zu einer benannten Frage zusammengefasst, | ||
| - | def ist_verrechenbar(bestellung): | + | ===== 4. Wie geprüft wird ===== |
| - | """ | + | |
| - | return bestellung[" | + | |
| + | Die Gleichwertigkeit prüft '' | ||
| - | def umsatz(bestellungen): | + | Die // |
| - | """ | + | |
| - | total = 0 | + | |
| - | for bestellung in bestellungen: | + | |
| - | if ist_verrechenbar(bestellung): | + | |
| - | total += bestellung[" | + | |
| - | return total | + | |
| + | === main_test.py === | ||
| + | {{gh> | ||
| - | if __name__ == '__main__': | + | '' |
| - | print(f" | + | |
| - | print(f" | + | |
| - | assert umsatz(bestellungen) == umsatz_alt(bestellungen) | + | Eine Abgabe, die richtig rechnet, aber die alte Struktur behält, kommt damit auf 9 von 11 Testpunkten. |
| - | assert umsatz([]) == umsatz_alt([]) == 0 | + | |
| - | assert umsatz([{" | + | |
| - | assert umsatz([{" | + | |
| - | print(" | + | |
| - | </ | + | |
| - | + | ||
| - | ===== 3. Was durch den Umbau verschwunden ist ===== | + | |
| - | + | ||
| - | * **Der Index '' | + | |
| - | * **Die Flagge '' | + | |
| - | * **Die Sprünge.** Ohne '' | + | |
| - | * **Zwei Verschachtelungsebenen.** Die beiden Bedingungen sind zu einer benannten Frage zusammengefasst, die man laut vorlesen kann: //Wenn die Bestellung verrechenbar ist, zähle sie dazu.// | + | |
| - | + | ||
| - | Übrig bleiben genau die drei Grundstrukturen: | + | |
| - | ===== 4. Antworten auf die Zusatzfragen ===== | + | ===== 5. Antworten auf die Zusatzfragen ===== |
| ==== Frage 1: Vergessenes Hochzählen ==== | ==== Frage 1: Vergessenes Hochzählen ==== | ||
| Zeile 99: | Zeile 58: | ||
| <code python> | <code python> | ||
| def umsatz_deklarativ(bestellungen): | def umsatz_deklarativ(bestellungen): | ||
| - | return sum(b["menge"] * b["preis"] for b in bestellungen if ist_verrechenbar(b)) | + | return sum(b['menge'] * b['preis'] for b in bestellungen if ist_verrechenbar(b)) |
| </ | </ | ||