Schleifen mit while
Eine while-Schleife wiederholt ihren Rumpf, solange eine Bedingung gilt, auch wenn vorher niemand weiß, wie viele Runden es werden. Du lernst, wie du eine Endlosschleife erkennst und anhältst und wie ein Programm so lange fragt, bis eine Eingabe passt.
Vorher ansehen: Schleifen mit for
Was du lernst
In dieser Lektion lernst du die while-Schleife kennen und kannst danach:
- eine
while-Schleife schreiben, die läuft, solange eine Bedingung gilt, und vorhersagen, wie viele Runden sie dreht - mit einer
while-Schleife ausrechnen, wie viele Schritte bis zu einem Ziel nötig sind, etwa bis sich ein Sparbetrag verdoppelt hat - erklären, warum eine Schleife endlos läuft, wenn der Rumpf ihre Bedingung nie falsch macht, und ein solches Programm mit „Stopp“ anhalten
- mit
while Trueundbreakso lange nach einer Eingabe fragen, bis sie gültig ist - begründen, wann
forund wannwhiledie passende Schleife ist
Die for-Schleife weiß von Anfang an, wie viele Runden
sie dreht: so viele, wie die Liste Elemente hat oder range() Zahlen liefert.
In den Grundideen gab es aber noch eine zweite Art
von Schleife, die läuft, solange eine Bedingung gilt, wie das Rühren eines
Teigs, das erst aufhört, wenn keine Klümpchen mehr da sind. Wie viele Runden
das dauert, weiß vorher niemand, und genau dafür hat Python die
while-Schleife.
Solange eine Bedingung gilt
count = 3
while count > 0:
print(count)
count = count - 1
print("Los!")Nach while steht eine Bedingung, wie du sie von if kennst
(Vergleiche und Wahrheitswerte), dann folgen ein Doppelpunkt und der eingerückte
Rumpf. Vor jeder Runde prüft Python die Bedingung: Ist sie wahr, läuft der
Rumpf einmal, und danach geht es zurück nach oben zur nächsten Prüfung; ist
sie falsch, macht das Programm hinter der Schleife weiter. Hier zählt der
Rumpf count in jeder Runde um eins herunter, nach der dritten Runde ist
count gleich 0, die Bedingung count > 0 gilt nicht mehr, und es geht mit
print("Los!") weiter.
Ist die Bedingung schon bei der ersten Prüfung falsch, läuft der Rumpf kein
einziges Mal. Setz zum Ausprobieren count = 0 an den Anfang.
Wenn niemand weiß, wie viele Runden es werden
Für einen Countdown hättest du auch range() nehmen können. Eine
while-Schleife lohnt sich dort, wo sich die Zahl der Runden erst beim
Rechnen ergibt, etwa bei der Frage, wie viele Jahre es dauert, bis sich ein
Sparbetrag bei 5 Prozent Zinsen verdoppelt hat:
amount = 1000
years = 0
while amount < 2000:
amount = amount * 1.05
years += 1
print(f"Nach {years} Jahren sind es {amount:.2f} Euro.")Die Schleife schreibt Jahr für Jahr die Zinsen gut, zählt dabei mit und hört
in dem Jahr auf, in dem der Betrag zum ersten Mal 2000 Euro erreicht. Ändere
den Faktor auf 1.02 oder 1.10, und die Schleife dreht ohne jede weitere
Änderung so viele Runden, wie es braucht.
Dasselbe Muster beantwortet die Frage, wie oft du eine Zahl halbieren kannst, bis sie kleiner als 1 ist:
number = 100
halvings = 0
while number >= 1:
number = number / 2
halvings += 1
print(number)
print(f"{halvings}-mal halbiert.")Die Endlosschleife
Auf mancher Shampooflasche steht „Auftragen, ausspülen, wiederholen“, und
wer das wörtlich nimmt, kommt nie wieder aus der Dusche. Einer
while-Schleife geht es genauso, wenn ihr Rumpf nichts ändert, was die
Bedingung irgendwann falsch macht. Lösch im Countdown oben die Zeile
count = count - 1 und führ den Code aus: count bleibt 3, count > 0 gilt
für immer, und die Ausgabe füllt sich mit Dreien.
Ein Programm, das nicht aufhört, hältst du hier mit der Schaltfläche Stopp an, die an der Stelle von Ausführen steht, solange ein Programm läuft. Danach holt Zurücksetzen den ursprünglichen Code zurück. Auf deinem eigenen Rechner bricht im Terminal die Tastenkombination Strg+C ein solches Programm ab.
Nicht jede Endlosschleife ist so leicht zu sehen. Im Sparbeispiel ändert sich
amount zwar in jeder Runde, aber mit dem Faktor 1.00, also 0 Prozent
Zinsen, bleibt der Betrag trotzdem bei 1000, und das Ziel ist nie erreicht.
Bevor du eine while-Schleife schreibst, frag dich deshalb, was im Rumpf die
Bedingung ihrem Ende näherbringt und ob das in jedem Fall geschieht.
Fragen, bis die Antwort passt
Eine häufige Aufgabe für while ist eine Eingabe, die nur bestimmte Werte
haben darf. Das Programm soll so lange fragen, bis jemand eine positive Zahl
eintippt, und wie oft das sein wird, weiß es vorher nicht. Am klarsten
schreibst du das mit while True und break:
while True:
number = int(input("Gib eine positive Zahl ein: "))
if number > 0:
break
print("Die Zahl muss größer als 0 sein, versuch es noch einmal.")
print(f"Danke, mit {number} geht es weiter.")while True ist eine Schleife, deren Bedingung immer gilt, also eine gewollte
Endlosschleife. Beendet wird sie von innen: break verlässt die Schleife
sofort, und das Programm macht hinter ihr weiter. So steht die Frage nur
einmal im Programm, am Anfang des Rumpfs, und die Prüfung direkt darunter.
Tipp zuerst -3 und dann 0 ein, bevor du eine passende Zahl wählst.
break beendet übrigens auch eine for-Schleife, bevor ihre Liste zu Ende
ist.
for oder while?
Beide Schleifen wiederholen ihren Rumpf, und jede for-Schleife ließe sich
auch mit while schreiben:
for number in range(1, 4):
print(f"for: {number}")
number = 1
while number < 4:
print(f"while: {number}")
number += 1Beide geben 1, 2 und 3 aus, aber die while-Fassung muss sich selbst um drei
Dinge kümmern, die for von allein erledigt: einen Anfangswert, eine
Bedingung und eine Zeile, die weiterzählt, und wer die letzte vergisst, hat
eine Endlosschleife. Daraus ergibt sich eine einfache Regel: Gehst du durch
eine Liste, einen Text oder eine bekannte Zahl von Runden, nimm for; hängt
das Ende von etwas ab, das sich erst in der Schleife zeigt, etwa von einem
wachsenden Betrag oder von einer Eingabe, nimm while.
Was noch fehlt
Das Programm, das nach einer positiven Zahl fragt, hat noch eine Lücke: Tippt
jemand zwölf statt 12, kommt die Schleife gar nicht bis zur Prüfung, denn
schon int("zwölf") bricht das Programm mit einem ValueError ab. Probier es
im Kasten oben aus. Wie du eine solche Meldung liest, zeigt
Fehlermeldungen lesen, und wie ein Programm den Fehler abfängt und einfach
noch einmal fragt, folgt mit Fehler abfangen mit try und except in Teil 4 dieses Pfads.
Zum Mitnehmen
while bedingung:wiederholt den Rumpf, solange die Bedingung gilt, und prüft sie vor jeder Runde; ist sie schon zu Anfang falsch, läuft der Rumpf gar nicht.whilepasst, wenn sich die Zahl der Runden erst beim Rechnen oder durch Eingaben ergibt.- Ändert der Rumpf nichts, was die Bedingung irgendwann falsch macht, läuft die Schleife endlos; auf dieser Seite hält Stopp sie an, im Terminal Strg+C.
while Truemitbreakfragt so lange nach, bis eine Eingabe gültig ist.- Für Listen, Texte und eine feste Zahl von Runden ist
foreinfacher und sicherer.
Darauf baut auf
Mehr dazu
Siehe auch
Teste dich selbst
Details
- Niveau
- Einstieg
- Module
- Digitalisierung und Programmierung
- In Lernpfaden
- Python für Anfänger
- Code
5525- Stand
- 1. November 2026
- Status
- veröffentlicht