Heute lernst du:
Am Ende kannst du Programme schreiben, die nicht abstürzen, wenn der Nutzer falsche Eingaben macht.
Programme stürzen ab, wenn sie unerwartete Eingaben erhalten:
Beispiel ohne Fehlerbehandlung:
number = int(input("Gib eine Zahl ein: "))
print(10 / number)
Problem:
abc eingibt → ValueError0 eingibt → ZeroDivisionErrortry → Codeblock, der Fehler verursachen kann
except → was passiert, wenn ein bestimmter Fehler auftritt
try:
number = int(input("Gib eine Zahl ein: "))
print(10 / number)
except ValueError:
print("Bitte gib eine gültige Zahl ein!")
except ZeroDivisionError:
print("Division durch Null ist nicht erlaubt!")
Erklärung:
ValueError → Eingabe ist keine ZahlZeroDivisionError → Division durch 0Du kannst auch alle Fehler abfangen, wenn du den genauen Typ nicht kennst:
try:
# code
except:
print("Ein Fehler ist aufgetreten!")
Tipp:
Wir verbessern das Zahlenratespiel aus Tag 7:
Problem vorher:
guess = int(input("Rate die Zahl von 1 bis 10: "))
Mit Fehlerbehandlung:
import random
number = random.randint(1, 10)
guess = 0
attempts = 0
while guess != number:
try:
guess = int(input("Rate die Zahl von 1 bis 10: "))
attempts += 1
if guess < number:
print("Zu niedrig!")
elif guess > number:
print("Zu hoch!")
else:
print("Richtig! Du hast", attempts, "Versuche gebraucht!")
except ValueError:
print("Bitte gib eine Zahl ein!")
Erklärung:
ValueError → eine Meldung wird angezeigtVerbessere dein bestehendes Zahlenratespiel:
try / except in eine Funktion einbauen, z. B. def guess_number():