Arbeit mit Schleifen wiederholen · Übung
Durchlaufe eine Liste
Eine Schleife zu lesen ist das eine. Beim Schreiben machst du sie dir zu eigen. In dieser Lektion schreibst du die Schleife und beobachtest jeden Durchlauf.
Beobachte die Änderung der Schleifenvariablen
Die Schleifenvariable ist eine normale Variable. Interessant ist, dass Python ihr vor jedem Durchlauf des Rumpfs einen neuen Wert zuweist.
Führe das Beispiel aus und verfolge size durch die Durchläufe. Zuerst hält sie 8. Python erreicht das Ende des Rumpfs, springt zur for-Zeile zurück, und size wird zu 12. Dann zu 16. Nach dem letzten Wert gibt es nichts mehr zu übergeben. Python verlässt deshalb die Schleife und fährt darunter fort.
Diese erneute Zuweisung lässt sich leicht beschreiben und noch besser beobachten. Genau das tust du am Ende dieser Lektion mit der Schaltfläche Step im Editor.
Ein Rumpf kann mehrere Zeilen enthalten
Alles, was unter der for-Zeile eingerückt ist, läuft in jedem Durchlauf der Reihe nach:
Sechs Zeilen aus der Schleife, dann eine Zeile danach. Beachte, wie die beiden eingerückten Zeilen als Gruppe zusammenbleiben und die letzte Zeile davon getrennt ist.
Die Schleifenvariable hält ein Element, nicht die Liste
Am Anfang verwechselt man leicht die Liste mit dem aktuellen Element. Die Liste ist die gesamte Sammlung. In jedem Durchlauf verweist die Schleifenvariable auf ein Element daraus. Python erstellt für die Schleife keine separate Kopie dieses Elements:
price ist in jedem Durchlauf eine einzelne Zahl. prices bleibt die vollständige Liste, vor und nach der Schleife.
Drei Fehler, die du jetzt kennenlernen solltest
Jeder dieser Fehler wird dir irgendwann passieren. Wenn du ihn hier kennenlernst, erkennst du ihn später leichter.
Ein fehlender Doppelpunkt. Python hält mit einem SyntaxError an und zeigt auf das Ende der for-Zeile:
for guest in guests
print(guest)
Eine fehlende Einrückung. Python erwartet nach dem Doppelpunkt einen eingerückten Block und meldet einen IndentationError:
for guest in guests:
print(guest)
Eine Schleife über den falschen Namen. Dieser Fehler führt nicht zum Absturz und ist deshalb unauffälliger. Eine Schleife über einen einzelnen String durchläuft dessen Zeichen statt der beabsichtigten Liste:
Wenn deine Schleife einzelne Zeichen liefert, obwohl du ganze Elemente erwartest, prüfe, ob du den Namen im Singular geschrieben hast, obwohl du den Plural meintest.
Was gibt dieser Code aus?
notes = ["do", "re", "mi"]
for note in notes:
print(note.upper())
print("end")Nach dem Ende einer for-Schleife behält die Schleifenvariable ihren zuletzt erhaltenen Wert. Python entfernt den Namen nicht automatisch.
Eine leere Liste liefert überhaupt keinen Wert. Dann erstellt die Schleife ihre Schleifenvariable nicht und ändert auch keine bereits vorhandene Variable mit diesem Namen.
Welchen Wert hat bird nach dem Ende dieser Schleife?
birds = ["robin", "swift", "wren"]
for bird in birds:
print(bird)
Schreibe jetzt deine eigene Schleife.
Aufgabe
Die Liste plants ist bereits vorgegeben. Vervollständige das Programm, sodass es:
eine
for-Schleife mitplantals Schleifenvariable verwendet;pro Pflanze eine Zeile in der Form
Water the fern.ausgibt, mit dem Pflanzennamen anstelle vonfernund einem Punkt am Ende;die abschließende Zusammenfassungszeile beibehält, die einmal nach der Schleife läuft.
Erwartete Ausgabe:
Water the fern.
Water the basil.
Water the aloe.
Water the ivy.
Plants to water: 4
Füge der Liste eine fünfte Pflanze hinzu und führe das Programm erneut aus. Die Schleife soll sie ohne weitere Änderung verarbeiten. Entferne sie vor der Abgabe wieder.
Beobachte die Änderung der Schleifenvariablen
Sobald deine Schleife läuft, klicke in der Werkzeugleiste des Editors auf Step und gehe mit Next Zeile für Zeile vorwärts. Beobachte plant im Variablenbereich.
Du siehst, wie die Hervorhebung durch den Schleifenrumpf nach unten wandert, zur for-Zeile zurückspringt und plant den nächsten Wert annimmt: fern, dann basil, dann aloe, dann ivy. Dieser Rücksprung ist die Schleife. Es lohnt sich, ihn einmal im eigenen Code zu sehen.