Manchmal muss ein Programm eine Aufgabe wiederholen, ohne vorher zu wissen, wie oft. Ein Benutzer gibt solange Passwörter ein, bis er das richtige eingegeben hat. Ein Spiel läuft, bis der Spieler verliert. Für solche Situationen ist die While-Schleife das richtige Werkzeug.
Grundstruktur
while bedingung:
# Dieser Code wird wiederholt
Die Schleife prüft die Bedingung vor jedem Durchlauf. Ist sie True, wird der eingerückte Code ausgeführt. Dann wird die Bedingung erneut geprüft, und so weiter — bis die Bedingung False wird.
Einfaches Beispiel: Zählen
zahl = 1
while zahl <= 5:
print(zahl)
zahl += 1
print("Fertig!")
Ausgabe:
1
2
3
4
5
Fertig!
Die Variable zahl startet bei 1. Bei jedem Schleifendurchlauf wird sie um 1 erhöht. Sobald zahl den Wert 6 erreicht, ist zahl <= 5 falsch, und die Schleife endet.
Wenn du vergisst, die Variable in der Schleife zu verändern, läuft die Schleife für immer — eine sogenannte Endlosschleife. Das Programm friert ein. Stelle immer sicher, dass die Bedingung irgendwann False wird!
Benutzereingabe wiederholen
While-Schleifen sind ideal, um auf korrekte Eingaben zu warten:
passwort = ""
while passwort != "geheim123":
passwort = input("Gib dein Passwort ein: ")
print("Zugang gewährt!")
Das Programm fragt so lange nach dem Passwort, bis die richtige Eingabe gemacht wird.
Die break-Anweisung
Mit break kannst du eine Schleife sofort beenden, auch wenn die Bedingung noch True ist:
versuche = 0
while True: # scheinbar endlos
antwort = input("Rate die Zahl (1-10): ")
versuche += 1
if antwort == "7":
print(f"Richtig! Du hast {versuche} Versuch/e gebraucht.")
break # Schleife beenden
print("Falsch, versuche es nochmal.")
while True: erstellt eine Schleife, die von selbst nicht aufhört. Sie wird häufig zusammen mit break verwendet, wenn die Abbruchbedingung komplizierter ist oder mitten im Schleifenkörper geprüft werden soll.
Die continue-Anweisung
continue überspringt den Rest des aktuellen Durchlaufs und springt zurück zur Bedingungsprüfung:
zahl = 0
while zahl < 10:
zahl += 1
if zahl % 2 == 0:
continue # gerade Zahlen überspringen
print(zahl)
# Gibt aus: 1 3 5 7 9
Bevorzuge für einfaches Zählen eine for-Schleife — sie ist kürzer und weniger fehleranfällig. Verwende while, wenn die Anzahl der Wiederholungen unbekannt ist oder von einer Bedingung abhängt.
Praktisches Beispiel: Passwort-Prüfung
MAX_VERSUCHE = 3
versuche = 0
korrekt = False
while versuche < MAX_VERSUCHE:
eingabe = input("Passwort: ")
versuche += 1
if eingabe == "sicher99":
korrekt = True
break
print(f"Falsch. Noch {MAX_VERSUCHE - versuche} Versuch/e übrig.")
if korrekt:
print("Willkommen!")
else:
print("Konto gesperrt.")
Übungsaufgaben
Was passiert, wenn du in einer While-Schleife vergisst, die Zählvariable zu erhöhen? Zum Beispiel: zahl = 1 / while zahl <= 10: / print(zahl)
Antwort anzeigen
Schreibe eine While-Schleife, die alle geraden Zahlen von 2 bis 10 ausgibt.