Benutzereingaben wiederholen
Warum brauchen wir das?
Spiele und Dialoge fragen oft nochmal:
- falsche PIN → erneut
- Ratespiel → neuer Tipp
- Menü bis
"ende" - Formular: solange die Antwort leer ist
while + input ist ein Power-Duo: das Programm wartet, prüft, fragt wieder.
Definition: Eingabe-Schleife
Definition – Eingabe-Schleife:
Eine Eingabe-Schleife fragt den User so lange, bis eine Bedingung erfüllt ist
(richtige Antwort, erlaubter Befehl, Max-Versuche oder Abbruchwort).
Ohne sie müsstest du dieselbe input-Zeile zehnmal kopieren – und wüsstest
trotzdem nicht, was die Person tippt.
Muster 1: bis die Antwort stimmt
antwort = ""
while antwort != "ja":
antwort = input("Bist du bereit? (ja) ").strip().lower()
print("Los!")
Warum antwort = "" vorher?
Damit die Variable existiert und die erste while-Prüfung möglich ist.
"" ist ungleich "ja" → die Schleife startet.
Py: „Erst leere Box, dann füllen, dann prüfen.“
Buggy startet ohne Variable und erntet NameError.
Muster 2: mit Versuchen
versuche = 0
richtig = False
while versuche < 3 and not richtig:
tipp = input("Geheimwort: ").strip().lower()
if tipp == "python":
richtig = True
else:
print("Noch nicht.")
versuche = versuche + 1
if richtig:
print("Geschafft!")
else:
print("Leider verbraucht.")
Die Schleife endet bei Treffer oder nach 3 Versuchen – zwei Auswege.
Muster 3: Menü bis Exit
wahl = ""
while wahl != "3":
print("1) A 2) B 3) Ende")
wahl = input("Wahl: ").strip()
print("Programm beendet.")
Neue Wörter
while-Schleife, die wiederholt input fragt.
Wann die Schleife enden darf (Antwort, Exit, Max-Versuche).
Was passiert im Computer?
- Bedingung prüfen.
- True →
input(warten) → vielleichtif→ Zähler ändern. - Zurück zu 1.
- False → weiter im Programm nach der Schleife.
Jede Eingabe ist ein EVA-Minizyklus in der Schleife.
Häufige Fehler
| Fehler | Problem |
|---|---|
| Variable vor while nicht gesetzt | NameError bei erster Prüfung |
| Kein Abbruch möglich | Endlosschleife |
strip/lower vergessen | „Ja“ ≠ „ja“ |
| Versuche nicht erhöhen | nie „verbraucht“ |
| Abbruchwort falsch geschrieben | Schleife endet nicht |
Probiere es selbst
Experiment 1 – bereit?
antwort = ""
while antwort != "ja":
antwort = input("Bereit? (ja) ").strip().lower()
print("Los!")
Experiment 2 – PIN
pin = ""
while pin != "1234":
pin = input("PIN: ").strip()
print("OK")
Experiment 3 – max 3
Geheimwort mit maximal 3 Versuchen (Muster 2).
Experiment 4 – Menü
Drei Optionen, Ende bei "3".
Fehlerdetektiv
while antwort != "ja":
antwort = input("ja? ")
Loesung anzeigen
antwort existiert vor dem ersten Test oft nicht. Vorher setzen:
antwort = ""
while antwort != "ja":
antwort = input("ja? ").strip().lower()
Übungen
Level 1 – Entdecken
Frage nach "ok", bis es passt (mit strip/lower).
Loesung
a = ""
while a != "ok":
a = input("Tippe ok: ").strip().lower()
print("Danke")
Level 2 – Anwenden
Farben-Menü bis "ende".
Loesung
cmd = ""
while cmd != "ende":
cmd = input("Farbe oder ende: ").strip().lower()
if cmd != "ende":
print(f"Du magst {cmd}")
Level 3 – Erweitern
Passwort "club", max. 3 Versuche, am Ende Erfolg oder Misserfolg.
Loesung
versuche = 0
ok = False
while versuche < 3 and not ok:
pw = input("Passwort: ").strip().lower()
if pw == "club":
ok = True
else:
print("Falsch")
versuche = versuche + 1
if ok:
print("Willkommen")
else:
print("Gesperrt")
Mini-Challenge
Baue ein Mini-Menü mit 2 Aktionen + Exit.
Erkläre: Warum muss die Variable vor dem while existieren?
Zusammenfassung
while+input= wiederholte Fragen.- Variable vor der Schleife initialisieren.
- Abbruch: richtige Antwort, Exit-Wort, Max-Versuche.
strip/lowermachen Vergleiche fair.- Immer einen Ausweg einplanen.
Mini-Quiz
- Was ist eine Eingabe-Schleife?
- Nenne zwei Abbrucharten.
- Warum lower bei Textantworten?
Loesungen
- while, das wiederholt input fragt.
- z. B. richtige Antwort, Exit-Wort, Max-Versuche.
- Damit
Jaundjagleich behandelt werden.
Eingabe-Loops sitzen! Als Nächstes: Endlosschleifen erkennen.