Menu

Python-while-Schleifen: Syntax, while True und Endlosschleifen vermeiden

Wann du eine while-Schleife statt einer for-Schleife wählst, wie du Endlosschleifen vermeidest und die Muster, die in echtem Code am häufigsten vorkommen.

Eine Schleife, die eine Bedingung beobachtet

Während for über eine bekannte Sequenz iteriert, schleift while weiter, solange eine Bedingung wahr ist. Du greifst zu ihr, wenn du vorher nicht weißt, wie viele Iterationen es werden — erneut versuchen, bis etwas funktioniert, Eingaben lesen, bis der Nutzer stopp sagt, einen Dienst pollen, bis er antwortet.

Die Form ist schlicht:

main.py
Output
Click Run to see the output here.

Das gibt 0 bis 4 aus. Python prüft die Bedingung am Beginn jeder Iteration. Ist sie wahr, läuft der Rumpf. Dann prüft es erneut. Wird die Bedingung falsch, endet die Schleife.

Beachte: count += 1 ist wichtig. Ohne es bliebe die Bedingung für immer wahr — eine Endlosschleife. Das ist die Hauptfalle von while und der Hauptgrund, for zu bevorzugen, wann immer du kannst.

Wann while das richtige Werkzeug ist

Ein paar klassische Anwendungsfälle:

Erneut versuchen, bis Erfolg.

main.py
Output
Click Run to see the output here.

Eingaben lesen, bis der Nutzer beendet.

main.py
Output
Click Run to see the output here.

Eine Warteschlange abarbeiten.

main.py
Output
Click Run to see the output here.

Der rote Faden: Du beobachtest eine Zustandsänderung, anstatt über Elemente zu iterieren.

while True ist in Ordnung

Dieses Muster siehst du oft:

main.py
Output
Click Run to see the output here.

Das ist idiomatisches Python, wenn die „eigentliche“ Ausstiegsbedingung im Schleifenrumpf liegt und nicht sauber am Anfang prüfbar ist. Es liest sich einfacher, als einen should_continue-Flag zu erfinden, den du an einer Stelle aktualisierst und an einer anderen prüfst.

Die einzige Regel: stell sicher, dass es ein break (oder return oder eine geworfene Ausnahme) gibt, das der Code irgendwann erreicht. Ein bedingungsloses while True: ohne Ausweg ist der Klassiker, um ein Programm einzufrieren.

Die Endlosschleife vermeiden

Endlosschleifen entstehen, wenn die Bedingung für immer wahr bleibt. Die üblichen Verdächtigen:

  • Variable nicht aktualisiert. while count < 5: braucht etwas im Rumpf, das count ändert.
  • Falsche Variable aktualisiert. while i < 10: und dann j += 1 im Rumpf — leicht zu übersehen, wenn dein Code mehr als ein paar Variablen hat.
  • Fließkomma-Vergleich. while x != 1.0: kann ewig laufen, wenn x nur nahe an 1.0 herankommt. Nimm stattdessen <= oder abs(x - 1.0) < tolerance.

Sitzt du in einer Endlosschleife im Terminal fest, drück Strg+C. Das sendet ein Interrupt-Signal, und Python bricht ab, was es gerade tut.

break, continue und else

while unterstützt dieselben drei Flusswerkzeuge wie for:

  • break verlässt die Schleife sofort.
  • continue springt zur nächsten Iteration (die Bedingung wird erneut geprüft).
  • else läuft, wenn die Schleife ohne break beendet wurde.
main.py
Output
Click Run to see the output here.

Das ist eine primitive Primzahlprüfung. Feuert das innere break, ist die Zahl zusammengesetzt. Endet die Schleife natürlich (Bedingung wird falsch), läuft das else und erklärt die Zahl zur Primzahl.

while vs. for: wann was?

Ein schneller mentaler Test:

  • Hast du eine Sammlung zum Durchgehen?for.
  • Musst du eine feste Anzahl von Malen iterieren?for i in range(n):.
  • Schleifst du, bis sich eine Bedingung ändert?while.

In frühem Python-Code wirst du feststellen, dass for 90 % der Schleifen abdeckt. while taucht auf, wenn du etwas wie Polling, Wiederholungen oder einen einfachen REPL baust. Nutzt du while, um eine Liste mit einem Index zu iterieren, ist das ein Zeichen, auf for + enumerate umzusteigen.

Ein praktisches while-Programm

Ein Zahlenratspiel ist ein Klassiker, weil die Zahl der Iterationen davon abhängt, wie der Nutzer spielt:

main.py
Output
Click Run to see the output here.

Du kannst vorher nicht wissen, wie viele Versuche es werden — das hängt von den Tipps des Nutzers ab. Genau dafür existiert while.

Ausblick

Du hast jetzt die zwei Schleifentypen gesehen, die Python dir bietet. Als Nächstes: range() im Detail — er taucht in fast jeder zählenden for-Schleife auf, und die kleinen Feinheiten sind es wert zu verstehen, bevor wir in die Sammlungen gehen.

Häufig gestellte Fragen

Wann soll ich eine while-Schleife statt einer for-Schleife nutzen?

Nimm while, wenn du vorher nicht weißt, wie viele Iterationen du brauchst — zum Beispiel so lange erneut versuchen, bis etwas klappt, oder Eingaben lesen, bis der Nutzer „quit“ tippt. Nimm for, wenn du eine bekannte Sammlung durchgehst.

Wie vermeide ich eine Endlosschleife in Python?

Sorg dafür, dass in der Schleife etwas die Bedingung irgendwann falsch werden lässt. Der häufigste Grund für Endlosschleifen ist, die Variable, von der die Bedingung abhängt, nicht zu aktualisieren. Wenn du in eine gerätst, drück Strg+C im Terminal, um sie zu stoppen.

Ist while True schlechte Praxis?

Nicht grundsätzlich. while True: mit einem klaren break darin ist ein völlig normales Muster für „schleife, bis wir eine bestimmte Ausstiegsbedingung erreichen“. Es ist sauberer, als einen booleschen Flag zu erfinden, den du an zwei Stellen verwalten musst.

Lerne mit Coddy zu programmieren

LOS GEHT'S