Ziele
- Eine „fußgesteuerte" Schleife in Python nachbauen
- Falsche Eingaben mit
try/exceptabfangen - Eine Eingabe so lange wiederholen, bis sie gültig ist
Python hat kein do-while
Die while-Schleife prüft die Bedingung vorher (kopfgesteuert) – sie läuft also evtl. gar nicht. Manchmal will man aber, dass ein Block mindestens einmal ausgeführt wird. Das baut man mit while True und break nach:
while True:
zahl = int(input("Zahl zwischen 1 und 10: "))
if 1 <= zahl <= 10:
break
print("Ungültig, nochmal.")
print("Danke:", zahl)Erklärung
while True läuft „ewig", bis ein break kommt. Der Block wird garantiert einmal ausgeführt, bevor die Bedingung (1 <= zahl <= 10) geprüft wird. Genau das leistet ein do-while.
Abstürze abfangen mit try/except
int("acht") löst einen ValueError aus und beendet das Programm. Mit try / except fängst du das ab:
while True:
try:
zahl = int(input("Gib eine ganze Zahl ein: "))
break
except ValueError:
print("Das war keine ganze Zahl. Versuch es nochmal.")
print("Quadrat:", zahl ** 2)Erklärung
Python führt den try-Block aus. Tritt darin ein ValueError auf, springt es sofort in den except-Block – ohne Absturz. Sonst wird except übersprungen.
Kombiniert: robuste Fakultät
def fakultaet(n):
ergebnis = 1
for i in range(2, n + 1):
ergebnis *= i
return ergebnis
while True:
try:
n = int(input("n (>= 0): "))
if n < 0:
print("Bitte keine negative Zahl.")
continue
break
except ValueError:
print("Bitte eine ganze Zahl.")
print(f"{n}! = {fakultaet(n)}")Aufgaben
Löse die folgenden Aufgaben selbstständig oder mit einem Partner oder Partnerin.
Aufgabe 1: Passwort
Frage so lange nach einem Passwort, bis der Nutzer "geheim" eingibt. Dann „Zugang gewährt".
# while True + breakAufgabe 2: Nur Kommazahlen
Lies eine Kommazahl ein. Bei ungültiger Eingabe eine Meldung und erneut fragen.
# try / except ValueErrorTipp
Achtung: Python erwartet einen Punkt (3.5), kein Komma. float("3,5") schlägt fehl – genau das soll die Aufgabe zeigen.
Aufgabe 3: Menü
Zeige ein Menü (1–3) und wiederhole die Frage, bis eine gültige Zahl kommt. Gib die Auswahl aus.
# dein Code