Arbeit mit Schleifen wiederholen · Übung
Baue ein Ergebnis schrittweise auf
Die letzten beiden Übungen haben die Werte eines Zahlenbereichs in einer Liste gesammelt. Manchmal brauchst du eine einzelne Antwort, die von allen Werten abhängt, etwa den Gesamtpreis mehrerer Artikel.
Dafür brauchst du eine Variable, die von einem Durchlauf zum nächsten erhalten bleibt.
Außen beginnen, innen ändern, danach verwenden
Angenommen, du möchtest die Summe einer Preisliste:
Drei Zeilen, drei Aufgaben:
total = 0läuft vor der Schleife. Es erstellt die Variable und gibt ihr einen Ausgangswert.total = total + priceläuft innerhalb der Schleife, einmal pro Wert. Es nimmt die aktuelle Summe und ersetzt sie durch eine größere.print(total)läuft nach der Schleife, wenn alle Werte addiert wurden.
Dieses Muster hat einen Namen. Die Variable heißt Akkumulator, und wir sprechen vom Akkumulatormuster. Die Schleife hält ein Ergebnis fest, zu dem jeder Wert beiträgt.
Verfolge total durch die Durchläufe: Es beginnt bei 0, hält dann 4, danach 13 und schließlich 28. Den Anstieg Durchlauf für Durchlauf zu beobachten macht das Muster viel leichter nachvollziehbar als nur darüber zu lesen. Die Übung am Ende dieser Lektion eignet sich dafür mit der Schaltfläche Step.
Diese Darstellung in vier Feldern hält den Akkumulator vor der Schleife und nach jeder Addition fest. BEFORE LOOP bedeutet „vor der Schleife“, PASS bezeichnet einen Durchlauf:

Warum der Ausgangswert wichtig ist
Wenn total = 0 an der falschen Stelle steht, setzt die Schleife den Wert in jedem Durchlauf zurück:
Die Antwort ist 15, der letzte Preis, weil die Summe vor jeder Addition verworfen wurde. Enthält ein Akkumulator am Ende nur den letzten Wert, prüfe, ob du ihn versehentlich innerhalb der Schleife eingerichtet hast.
Wenn du die Zeile ganz weglässt, entsteht im ersten Durchlauf ein NameError, denn total + price braucht ein bereits vorhandenes total.
Was gibt dieser Code aus?
values = [2, 5, 3]
total = 0
for value in values:
total = total + value
print(total)Wo gehört der Ausgangswert eines Akkumulators hin?
Wenn die lange Form klar ist
Python hat eine kürzere Schreibweise für die Aktualisierung:
total += price
Für diese Zahlen bedeutet sie dasselbe wie total = total + price: Nimm die aktuelle Summe, addiere den aktuellen Preis und speichere den neuen Wert wieder in total. Die längere Form eignet sich gut, um das Muster nachzuvollziehen. Die kürzere ist praktisch, sobald du erklären kannst, was sie ersetzt.
Baue jetzt deine eigene Summe auf. Ein Akkumulator reicht für die erste Begegnung. Er hat bereits genug zu behalten.
Aufgabe
Die Liste donations ist bereits vorgegeben. Addiere mit einer Schleife jede Spende zu total und behalte die Berichtszeile nach der Schleife bei.
Erwartete Ausgabe:
Total: 142
Richte total vor der Schleife ein. Du kannst die Aktualisierung als total = total + donation schreiben oder, sobald dir das klar ist, als total += donation.
Beobachte, wie der Akkumulator wächst
Wenn dein Programm läuft, klicke in der Werkzeugleiste des Editors auf Step und gehe mit Next hindurch. Beobachte den Variablenbereich.
Sieh zu, wie total von 0 auf 12, dann auf 57 und schließlich auf 142 steigt. Die hilfreiche Frage in jedem Durchlauf lautet: „Was enthielt total vor dieser Spende, und was enthält es jetzt?“