Zum Hauptinhalt springen

Endlosschleifen erkennen

Warum brauchen wir das?

Eine Endlosschleife wiederholt sich für immer (oder bis du abbrichst).
Manchmal ist das Absicht (z. B. Spiele-Hauptschleife) – am Anfang ist es meist ein Bug.

Symptome:

  • der Bildschirm spuckt endlos Text aus
  • das Programm reagiert nicht mehr
  • der Lüfter wird laut

Buggy liebt sie. Du sollst sie finden, stoppen und verhindern.

Definition: Endlosschleife

Definition – Endlosschleife:
Eine Endlosschleife ist eine Schleife, deren Bedingung niemals False wird
(oder deren Abbruch nie erreicht wird).

Merksatz:

Jede while-Schleife braucht einen Ausweg. Sonst läuft sie ewig.

Klassiker – die drei Buggy-Hits

1) Zähler ändert sich nicht

i = 1
while i <= 5:
print(i)
# i = i + 1 fehlt!

Die Bedingung bleibt True, weil i immer 1 ist.

2) Bedingung immer True

while True:
print("ewig")

True wird nie False. Ohne break (Ausblick) endet das nicht.

3) Falsche Richtung

i = 1
while i > 0:
print(i)
i = i + 1 # wird immer groesser, bleibt > 0

Du wolltest vielleicht runterzählen – läufst aber nach oben davon.

Wie stoppen? (ohne Panik)

In vielen Editoren und Terminals:

  • Stop-Button
  • Ctrl + C im Terminal

Dann Code reparieren – nicht den Rechner ausschalten.

Py: „Stop ist ok. Panik ist optional.“
Lily: „Erst stoppen, dann Checkliste.“

Checkliste vor dem Start

  • Welche Variable steuert die Schleife?
  • Ändert sie sich im Block?
  • Kann die Bedingung irgendwann False werden?
  • Gibt es ein Stoppwort / Max-Versuche?
  • Habe ich mit kleinen Zahlen getestet?

Bewusstes while True (Ausblick)

Später ist while True mit klarem Abbruch ok:

while True:
cmd = input("> ").strip().lower()
if cmd == "ende":
break
print("ok")

break beendet die Schleife sofort. Merke die Idee – Details kommen mit der Zeit.

Neue Wörter

Endlosschleifeinfinite loop

Schleife ohne erreichbares Ende.

breakbreak

Verlaesst die Schleife sofort (Ausblick).

Abbruchbedingungexit condition

Wann die Schleife enden darf – muss erreichbar sein.

Was passiert im Computer?

  1. Bedingung prüfen → True
  2. Block ausführen
  3. Zurück zu 1
  4. … für immer …

Die CPU arbeitet fleißig – aber an derselben Aufgabe ohne Fortschritt zum Ende. Das ist kein „Kaputtsein des Computers“, sondern dein Programm ohne Ausweg.

Häufige Irrtümer

IrrtumRichtig
Endlos = PC kaputtoft nur Programm stoppen
while True ist immer falschmit geplantem Abbruch später ok
Nur Zähler-Fehlerauch falsche Richtung / nie treffende Bedingung
Einmal testen reichtGrenzfälle und Abbruch testen

Probiere es selbst

Experiment 1 – Checkliste

Nimm dieses Programm und hake die Checkliste ab:

n = 3
while n > 0:
print(n)
n = n - 1

Experiment 2 – absichtlich kaputt (kurz!)

Überlege nur: Warum endet das nicht?

x = 0
while x < 5:
print(x)
# Aenderung fehlt

Experiment 3 – reparieren

Schreibe Experiment 2 so um, dass 0..4 erscheint und endet.

Experiment 4 – Menü mit Ende

wahl = ""
while wahl != "ende":
wahl = input("Befehl (ende zum Stoppen): ").strip().lower()
print("Tschuess")

Fehlerdetektiv

i = 10
while i > 0:
print(i)
i = i + 1
Loesung anzeigen

i wächst und bleibt > 0. Für Countdown:

i = 10
while i > 0:
print(i)
i = i - 1

Übungen

Level 1 – Entdecken

Markiere in drei Mini-Snippets: Endlos ja/nein? (auf Papier)

  1. while 2 > 1: print("a")
  2. i=1; while i<=3: print(i); i=i+1
  3. while False: print("b")
Loesung
  1. ja (Endlos)
  2. nein (endet)
  3. nein (0 Durchläufe)

Level 2 – Anwenden

Repariere: Zahlen 1 bis 5 ausgeben (Zähler fehlte).

Loesung
i = 1
while i <= 5:
print(i)
i = i + 1

Level 3 – Erweitern

Menü bis "q": bei anderen Eingaben „unbekannt“, bei "q" Ende.

Loesung
cmd = ""
while cmd != "q":
cmd = input("cmd (q=quit): ").strip().lower()
if cmd != "q":
print("unbekannt")
print("Ende")

Mini-Challenge

Schreibe deine persönliche Anti-Endlos-Checkliste in 4 Punkten.
Erkläre: Was ist der Unterschied zwischen Bug-Endlos und geplantem Loop?

Zusammenfassung

  • Endlos = Bedingung wird nie False / Abbruch nie erreicht.
  • Klassiker: fehlende Änderung, immer True, falsche Richtung.
  • Stoppen: Stop-Button oder Ctrl+C.
  • Vor dem Start: Checkliste.
  • while True + break ist Fortgeschrittenen-Muster.
  • Buggy freut sich über Panik – du stoppst cool und reparierst.

Mini-Quiz

Mini-QuizWas fehlt oft bei einer Endlosschleife mit Zaehler?
  1. Wie stoppst du oft im Terminal?
  2. Ist while True immer falsch?
  3. Nenne einen Endlos-Klassiker.
Loesungen
  1. Ctrl+C (oder Stop-Button).
  2. Nein – mit geplantem Abbruch später ok.
  3. z. B. Zähler ändert sich nicht.

Endlos enttarnt! Mini-Projekt: Zahlen-Ratespiel.