Arbeit mit Schleifen wiederholen · Übung
Beende eine Schleife mit break
Eine while True-Schleife kann nicht durch eine Änderung ihrer Bedingung stoppen. Die vorherige Lektion ließ absichtlich eine laufen, die auf einen Ausstieg aus dem Rumpf wartete.
Dieser Ausstieg ist break. Sobald Python es erreicht, endet die aktuelle Schleife sofort. Die Ausführung geht in der ersten Zeile unterhalb der Schleife weiter.
Stoppe, wenn die Antwort gefunden ist
Suchen ist ein naheliegender erster Einsatz. Wenn du gefunden hast, was du brauchst, gibt es keinen Grund weiterzusuchen:
Die Schleife prüft drei Namen, nicht vier. Wenn name gleich "Alan" ist, überspringt break alle verbleibenden Elemente. Das abschließende print() läuft trotzdem, weil es unterhalb der Schleife steht, nicht darin.
Ohne break würde diese kleine Suche nur eine unnötige Prüfung ausführen. Bei einer langen Liste oder wenn jede Prüfung echte Arbeit verursacht, ist es wichtig, bei der gefundenen Antwort zu stoppen.
Gib while True einen sichtbaren Ausstieg
Jetzt kann aus dem unfertigen Muster der vorherigen Lektion ein Menü werden, das offen bleibt, bis die Person es beenden möchte:
while True:
command = input("Type help or quit: ").strip().lower()
if command == "help":
print("Try one small command at a time.")
elif command == "quit":
break
else:
print("I do not know that command.")
print("Goodbye")
Lies den wichtigen Weg der Reihe nach:
while Truebeginnt einen weiteren Durchlauf.Das Programm fragt nach einem Befehl.
quitführt zubreak.Python verlässt die Schleife und gibt
Goodbyeaus.
Die Schleife ist bewusst offen, aber ihr Ausstieg ist nicht versteckt. Du kannst genau auf die Auswahl zeigen, die zu break führt.
Speichere das Ergebnis vor break
break steigt sofort aus. Speichere deshalb alles, was du noch brauchst, vorher:
Stünde die Zuweisung unter break, könnte Python sie nie erreichen. Eine hilfreiche Frage bei der Fehlersuche lautet deshalb: „Habe ich die Antwort vor dem Ausstieg gespeichert?“
Was gibt dieser Code aus?
for value in [3, 7, 11, 15]:
if value > 10:
break
print(value)
print("end")Eine Schleife sucht in einer Liste die erste unbezahlte Bestellung. Was soll sie unmittelbar nach dem Speichern dieser Bestellung tun?
Verwende jetzt break für eine gezielte Suche. Die nächste Lektion ergänzt die andere Idee, einen Durchlauf zu überspringen, ohne die gesamte Schleife zu beenden.
Aufgabe
Ein Sensor hat eine Liste von Messwerten aufgezeichnet. Suche den ersten Messwert von 30 oder mehr.
Schreibe eine for-Schleife über readings, die:
für jeden untersuchten Messwert
1zucheckedaddiert;einen Messwert ab
30infirst_highspeichert und die Schleife mitbreakbeendet.
Behalte die beiden Berichtszeilen bei, die einmal nach der Schleife laufen.
Erwartete Ausgabe:
Readings checked: 3
First high reading: 30
Ein Messwert von genau 30 zählt als 30 oder mehr. Die Schleife soll deshalb dort stoppen und 45 und 9 gar nicht mehr ansehen. Speichere den Messwert vor break, denn Python verlässt die Schleife sofort.