Python for-Schleife vs. while-Schleife: wann du was verwendest
Beide Schleifen wiederholen Code, deshalb fragen sich Anfänger oft, welche sie nehmen sollen. Faustregel: Verwende eine for-Schleife, wenn du weißt, worüber du iterierst, und eine while-Schleife, wenn du auf eine Änderung wartest. Jedes Beispiel unten wurde ausgeführt, und die gezeigte Ausgabe ist exakt.
for mit range: eine bekannte Anzahl von Durchläufen
range(3) ergibt 0, 1 und 2. Die Schleifenvariable nimmt nacheinander jeden Wert an. Das Ende von range ist nie enthalten.
for i in range(3):
print(i)Ausgabe:
0 1 2
for über eine Liste: jedes Element
Eine for-Schleife kann direkt eine Liste, einen String, ein Dictionary oder alles andere durchlaufen, das sich Element für Element durchgehen lässt. Du brauchst keinen Index.
for part in ["wrench", "cable"]:
print(part)Ausgabe:
wrench cable
while: bis sich etwas ändert
Eine while-Schleife prüft ihre Bedingung vor jedem Durchlauf. Innerhalb der Schleife muss sich etwas ändern, das die Bedingung betrifft, sonst hört sie nie auf. Hier sinkt die Batterie um 3, bis nicht mehr genug übrig ist, und du kennst die Anzahl der Durchläufe im Voraus nicht.
battery = 10
steps = 0
while battery >= 3:
battery -= 3
steps += 1
print(steps)Ausgabe:
3
break und continue
break verlässt die Schleife sofort. continue überspringt den Rest dieses Durchlaufs und geht zum nächsten. Beides funktioniert in for- und in while-Schleifen.
for n in range(1, 8):
if n % 2 == 0:
continue
if n > 5:
break
print(n)Ausgabe:
1 3 5
Die Endlosschleife
Eine while-Schleife, deren Bedingung nie falsch wird, läuft für immer. Wenn dein Programm hängt, prüfe, ob sich die Variable in der Bedingung innerhalb der Schleife tatsächlich ändert. Auf dieser Seite wird ein Programm, das länger als fünf Sekunden läuft, für dich gestoppt.
Häufige Fragen
- Lässt sich jede for-Schleife als while-Schleife schreiben?
- Ja, aber es ist länger und leichter falsch zu machen, weil du den Zähler selbst verwaltest. Nimm for, wann immer du eine Sammlung oder einen festen Bereich durchläufst.
- Was ist der Unterschied zwischen break und continue?
- break beendet die ganze Schleife. continue überspringt nur den aktuellen Durchlauf und macht mit dem nächsten weiter.
- Warum endet meine while-Schleife nie?
- Die Bedingung bleibt wahr, weil nichts innerhalb der Schleife die Variable verändert, die geprüft wird. Füge eine Zeile hinzu, die sie Richtung Ende bewegt, zum Beispiel n -= 1.