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
Schleife ohne erreichbares Ende.
Verlaesst die Schleife sofort (Ausblick).
Wann die Schleife enden darf – muss erreichbar sein.
Was passiert im Computer?
- Bedingung prüfen → True
- Block ausführen
- Zurück zu 1
- … 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
| Irrtum | Richtig |
|---|---|
| Endlos = PC kaputt | oft nur Programm stoppen |
while True ist immer falsch | mit geplantem Abbruch später ok |
| Nur Zähler-Fehler | auch falsche Richtung / nie treffende Bedingung |
| Einmal testen reicht | Grenzfä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)
while 2 > 1: print("a")i=1; while i<=3: print(i); i=i+1while False: print("b")
Loesung
- ja (Endlos)
- nein (endet)
- 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+breakist Fortgeschrittenen-Muster.- Buggy freut sich über Panik – du stoppst cool und reparierst.
Mini-Quiz
- Wie stoppst du oft im Terminal?
- Ist
while Trueimmer falsch? - Nenne einen Endlos-Klassiker.
Loesungen
- Ctrl+C (oder Stop-Button).
- Nein – mit geplantem Abbruch später ok.
- z. B. Zähler ändert sich nicht.
Endlos enttarnt! Mini-Projekt: Zahlen-Ratespiel.