Aufgabe 1: Einfacher Fehler
Fange einen Fehler mit try und except ab.
Das Programm soll versuchen, durch 0 zu teilen.
Musterlösung: Einfacher Fehler
try:
print(10 / 0)
except:
print("Ein Fehler ist aufgetreten")
Aufgabe 2: Bestimmten Fehler behandeln
In Python können bestimmte Fehlertypen einzeln behandelt werden.
Dadurch kann das Programm genauer auf Probleme reagieren.
In dieser Aufgabe soll ein ValueError abgefangen werden.
Musterlösung: ValueError
try:
zahl = int("Hallo")
except ValueError:
print("Ungültige Zahl")
Aufgabe 3: Benutzereingaben absichern
Programme sollten niemals davon ausgehen, dass Benutzer immer korrekte Daten eingeben.
Deshalb wird Fehlerbehandlung oft bei input() verwendet.
Das Programm soll:
- eine Zahl vom Benutzer abfragen,
- diese Zahl durch 10 teilen,
- Fehler bei falscher Eingabe abfangen.
Musterlösung: Sichere Eingaben
try:
zahl = int(input("Zahl eingeben: "))
print(10 / zahl)
except ValueError:
print("Bitte nur Zahlen eingeben")
except ZeroDivisionError:
print("Division durch 0 nicht erlaubt")
Aufgabe 4: Mehrere Fehlerarten behandeln
In echten Programmen können gleichzeitig verschiedene Fehler auftreten.
Deshalb werden oft mehrere except Blöcke verwendet.
Erstelle ein Programm, das:
- zwei Zahlen vom Benutzer abfragt,
- die erste Zahl durch die zweite teilt,
- zusätzlich eine Liste verwendet,
- einen Index vom Benutzer abfragt,
- mögliche Fehler behandelt.
Das Programm soll folgende Fehler erkennen:
- falsche Zahleneingabe,
- Division durch 0,
- ungültiger Listenindex.
Musterlösung: Mehrere Fehler behandeln
zahlen = [10, 20, 30]
try:
a = int(input("Erste Zahl: "))
b = int(input("Zweite Zahl: "))
print("Ergebnis:", a / b)
index = int(input("Index wählen: "))
print(zahlen[index])
except ValueError:
print("Bitte nur Zahlen eingeben")
except ZeroDivisionError:
print("Division durch 0 ist nicht erlaubt")
except IndexError:
print("Ungültiger Index")
Aufgabe 5: Schwierige Fehlerbehandlung mit Dateien
Erstelle ein Programm, das:
- den Namen einer Datei vom Benutzer abfragt,
- versucht die Datei zu öffnen,
- jede Zeile nummeriert ausgibt,
- zählt wie viele Zeilen die Datei besitzt,
- Fehler behandelt.
Zusätzlich soll:
- bei jeder erfolgreichen Ausführung
"Datei erfolgreich gelesen"erscheinen, - ein
finallyBlock verwendet werden.
Musterlösung: Komplexe Fehlerbehandlung
dateiname = input("Dateiname: ")
try:
with open(dateiname, "r") as file:
count = 0
for zeile in file:
count += 1
print(str(count) + ": " + zeile)
print("Datei erfolgreich gelesen")
print("Anzahl der Zeilen:", count)
except FileNotFoundError:
print("Datei wurde nicht gefunden")
except PermissionError:
print("Keine Berechtigung für diese Datei")
except Exception as fehler:
print("Unbekannter Fehler:", fehler)
finally:
print("Programm beendet")