Lernziele
Du kannst...
- Zugriffs-, Semantik- und Bedienfehler deines Programms erkennen,
- Fehler einordnen,
- Fehler durch das
try...catch
Statement abfangen und - Lösungen bei auftretenden Fehlern implementieren.
Link: Materialien CodingDoJo week12
Übungsaufgaben
Löse folgende Übungsaufgaben. Die mit dem * gekennzeichnete Aufgaben sind zusätzliche Übungsaufgaben, die zur Wiederholung gedacht sind.
Fehlerbehandlung
A01 Fehlerbehandlung bei Benutzereingaben
Implementiere ein Programm, das vom Benutzer eine Zahl einliest, diese Zahl mit 10 multipliziert und dann ausgibt. Teste das Programm mit den Eingaben: 4, 100 und Hundert.
Gib eine Zahl ein: 4
40.0
Gib eine Zahl ein: 100
1000.0
Gib eine Zahl ein: Hundert
Traceback (most recent call last):
File "...\Programmierübung\Algorithmik\Fehlerbehandlung\Aufgabe_Aa.py", line 6, in <module>
eingabe = float(eingabe)
ValueError: could not convert string to float: 'Hundert'
A02 Fehlerbehandlung und Berechnung (in ArTEMiS)
Implementiere ein Programm, das eine Zahl vom Benutzer einliest und dann die Rechnung
5 / (zahl - 3)
berechnet und ausgibt. Fange alle auftretenden Fehler ab und teste das Programm mit den Eingaben: "Python", 5, 3
und 3.0
Gib eine Zahl ein: Python
Die Eingabe erzeugt einen Fehler. Bitte versuche es noch einmal.
Gib eine Zahl ein: 5
2.5
Gib eine Zahl ein: 3
Die Eingabe erzeugt einen Fehler. Bitte versuche es noch einmal.
Gib eine Zahl ein: 3.0
Die Eingabe erzeugt einen Fehler. Bitte versuche es noch einmal.
A03 *Angepasste Fehlermeldungen (in ArTEMiS)
Modifiziere das Programm aus der vorherigen Aufgabe so, dass Sie bei den verschiedenen Fehlern unterschiedliche, passende Fehlermeldungen ausgeben.
Gib eine Zahl ein: Python
Das Programm unterstützt nur Zahlen bestehend aus den Ziffern 0 bis 9.
Gib eine Zahl ein: 5
2.5
Gib eine Zahl ein: 3
Deine Eingabe löst leider eine Division durch durch 0 aus, welche nicht möglich ist.
Gib eine Zahl ein: 3.0
Deine Eingabe löst leider eine Division durch durch 0 aus, welche nicht möglich ist.
Fehlerbehandlung bei Dateizugriff
B01 Dateinamen einlesen
Implementiere ein Programm, das vom Benutzer einen Dateinamen einliest und diese Datei dann öffnet. Fange alle möglichen Fehler ab und gebe dem Benutzer eine Rückmeldung.
Welche Datei soll geöffnet werden? test
Es wurde keine Datei mit diesem Namen gefunden.
B02 Fehlerbehandlung Dateizugriff
Modifizieren das vorherige Programm so, dass es solange Dateinamen einliest, bis eine Datei ohne Fehler geöffnet wurde. Lege eine Datei
test.txt
in dem gleichen Verzeichnis an und teste das Programm. Vergiss nicht die Datei am Ende des Programms wieder zu schließen.Welche Datei soll geöffnet werden? test
Es wurde keine Datei mit diesem Namen gefunden.
Welche Datei soll geöffnet werden? test.txt
Die Datei test.txt wurde erfolgreich geöffnet
Die Datei test.txt wurde wieder geschlossen.
B03 Ausgabe einer Datei
Modifiziere das Programm so weiter, dass es bei erfolgreicher Öffnung einer Datei diese Zeile für Zeile ausgibt. Fülle die Datei
test.txt
mit Text und teste das Programm.Welche Datei soll geöffnet werden? test
Es wurde keine Datei mit diesem Namen gefunden.
Welche Datei soll geöffnet werden? test.txt
Die Datei test.txt wurde erfolgreich geöffnet
That is not dead which can eternal lie,
And with strange æons, even death may die.
Die Datei test.txt wurde wieder geschlossen.
B04 *Abbruchbedingung einfügen
Modifiziere das Programm weiter, so dass bei der Eingabe von
"Exit"
als Dateinamen das Programm abgebrochen wird.Welche Datei soll geöffnet werden? Exit
Das Programm wird jetzt beendet.
Fehlerbehandlung bei Modulzugriff
C01 Moduleinbindung
- Lege eine neue Datei mit dem Namen
wichtigesModul.py
an. - Implementiere zwei Funktionen
gibZahl1
undgibZahl2
, die jeweils nichts weiter als die Zahl 42 zurückgeben. - Lege eine zweite Datei mit dem Namen
meinProgramm.py
an. - Importiere die Funktionen aus dem in 1) erstellten Modul und rufe diese auf.
- Ändere den Funktionsnamen
gibZahl1
inwichtigesModul.py
zugibZahl3
und führe die DateimeinProgramm.py
aus. - Fange nun den Fehler ab und gib eine Rückmeldung an den Benutzer aus.
Die Funktion gibZahl1 konnte nicht ausgeführt werden, da sie nicht bekannt ist.