Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| modul:m323:learningunits:lu01:loesungen:prozedurzufunktion [2026/08/18 10:08] – Neue Loesung LU01.L09 - Vom Skript zur Funktion admin | modul:m323:learningunits:lu01:loesungen:prozedurzufunktion [2026/08/18 11:11] (aktuell) – Musterloesung via gh-Import aus dem solution-Branch admin | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| ===== 1. Analyse der Ausgangslage ===== | ===== 1. Analyse der Ausgangslage ===== | ||
| - | Alle drei '' | + | Alle drei '' |
| ^ Block ^ Warum Prozedur? ^ | ^ Block ^ Warum Prozedur? ^ | ||
| Zeile 14: | Zeile 14: | ||
| ===== 2. Musterlösung ===== | ===== 2. Musterlösung ===== | ||
| - | <code python> | + | ~~NOCACHE~~ |
| - | def artikel_hinzufuegen(lager, | + | === main.py === |
| - | """ | + | {{gh> |
| - | | + | |
| + | <WRAP center round info 80%> | ||
| + | **Zum '' | ||
| - | def gesamtwert(lager): | + | '' |
| - | """ | + | |
| - | total = 0 | + | |
| - | for artikel in lager: | + | |
| - | total += artikel[" | + | |
| - | return total | + | |
| + | Der Preis: Die aufrufende Stelle muss das Ergebnis auffangen ('' | ||
| + | </ | ||
| - | def teuerster_artikel(lager): | + | ===== 3. Die Tests, die den Kern treffen ===== |
| - | """ | + | |
| - | if not lager: | + | |
| - | return None | + | |
| - | teuerster | + | |
| - | for artikel in lager[1: | + | |
| - | if artikel[" | + | |
| - | teuerster | + | |
| - | return teuerster | + | |
| + | Zwei der neun Tests prüfen genau das, worum es didaktisch geht: | ||
| - | def formatiere_gesamtwert(lager): | + | === main_test.py === |
| - | """ | + | {{gh> |
| - | | + | |
| + | * '' | ||
| + | * '' | ||
| - | if __name__ == ' | + | Dazu kommt das Linting: Ein '' |
| - | lager = [] | + | |
| - | lager = artikel_hinzufuegen(lager, | + | |
| - | lager = artikel_hinzufuegen(lager, | + | |
| - | lager = artikel_hinzufuegen(lager, | + | |
| - | + | ||
| - | print(formatiere_gesamtwert(lager)) | + | |
| - | print(f" | + | |
| - | + | ||
| - | # Nachweis 1: derselbe Aufruf liefert immer dasselbe Ergebnis | + | |
| - | print(gesamtwert(lager) == gesamtwert(lager)) | + | |
| - | + | ||
| - | # Nachweis 2: das Original bleibt unverändert | + | |
| - | erweitert = artikel_hinzufuegen(lager, | + | |
| - | print(len(lager), | + | |
| - | + | ||
| - | # Randfall: leeres Lager | + | |
| - | print(teuerster_artikel([])) | + | |
| - | </ | + | |
| - | + | ||
| - | <WRAP center round info 80%> | + | |
| - | **Zum '' | + | |
| - | + | ||
| - | '' | + | |
| - | + | ||
| - | Der Preis: Die aufrufende Stelle muss das Ergebnis auffangen ('' | + | |
| - | </ | + | |
| - | ===== 3. Antworten auf die Kontrollfragen ===== | + | ===== 4. Antworten auf die Kontrollfragen ===== |
| ==== Frage 1: Ersetzbarkeit ==== | ==== Frage 1: Ersetzbarkeit ==== | ||
| Zeile 95: | Zeile 61: | ||
| <code python> | <code python> | ||
| def test_gesamtwert(): | def test_gesamtwert(): | ||
| - | lager = [{"name": "A", "menge": 2, "preis": 10.0}] | + | lager = [{'name': 'A', 'menge': 2, 'preis': 10.0}] |
| assert gesamtwert(lager) == 20.0 | assert gesamtwert(lager) == 20.0 | ||