Übung 8 – Debugging: Fehler finden und beheben
Ziel dieser Übung
Sie lesen Fehlermeldungen, finden Fehler gezielt und beheben sie – mit VS Code, print() und bei Bedarf mit KI.
1. Eine Fehlermeldung lesen
nmae = "Ada"
print(name)
Traceback (most recent call last):
File "hallo.py", line 2, in <module>
print(name)
^^^^
NameError: name 'name' is not defined
- Ganz unten lesen: Art des Fehlers (
NameError) und Beschreibung. - Zeilennummer suchen:
line 2. - Die Markierung
^^^^zeigt auf die Stelle.
| Fehler | Typische Ursache |
|---|---|
SyntaxError | Klammer oder Anführungszeichen vergessen, Tippfehler in der Schreibweise |
NameError | Tippfehler im Namen einer Variablen oder Funktion |
TypeError | Datentypen gemischt, z. B. Zahl und Text |
ValueError | Text lässt sich nicht in eine Zahl umwandeln |
IndentationError | falsch eingerückt – Zeilen beginnen ganz links |
2. So gehen Sie vor
- Rot unterstrichen: VS Code markiert viele Fehler schon beim Tippen. Mit der Maus darüber sehen Sie den Hinweis.
- Mit
print()nachsehen:print(type(zahl), zahl)zeigt, was wirklich in einer Variablen steckt. - Schritt für Schritt: nur eine Sache ändern, dann neu ausführen.
- KI gezielt fragen: Code und die vollständige Fehlermeldung einfügen, dazu: Was sollte passieren? Bitten Sie um eine Erklärung, nicht nur um die Lösung.
3. Aufgaben: Finden und beheben Sie die Fehler
Kopieren Sie jedes Programm in VS Code, führen Sie es aus und reparieren Sie es, bis es richtig funktioniert. Erst die Fehlermeldung lesen, dann die Lösung aufklappen.
Vergessene Klammern
Aufgabe 1 Debugging
name = input("Gib deinen Namen ein: ")
print("Hallo, " + name
Lösung anzeigen
Die schließende Klammer von print( fehlte.
name = input("Gib deinen Namen ein: ")
print("Hallo, " + name)Aufgabe 2 Debugging
zahl1 = int(input("Gib die erste Zahl ein: ")
zahl2 = int(input("Gib die zweite Zahl ein: "))
ergebnis = zahl1 * zahl2
print(f"{zahl1} * {zahl2} = {ergebnis}")
Lösung anzeigen
In Zeile 1 fehlte die zweite schließende Klammer – für int(. Das Zeichen ^ in der Fehlermeldung zeigt genau auf die Klammer, die nie geschlossen wurde.
zahl1 = int(input("Gib die erste Zahl ein: "))
zahl2 = int(input("Gib die zweite Zahl ein: "))
ergebnis = zahl1 * zahl2
print(f"{zahl1} * {zahl2} = {ergebnis}")Aufgabe 3 Debugging
eingabe1 = input("Gib eine Zahl ein: ")
eingabe2 = input("Gib eine andere Zahl ein: ")
zahl1 = int eingabe1)
zahl2 = float(eingabe2)
ergebnis = zahl1 * (zahl2 + 10
print(f"{zahl1} * ({zahl2} + 10) = {ergebnis}")
Lösung anzeigen
Zwei Klammern fehlten: bei int(eingabe1) und am Ende von (zahl2 + 10).
eingabe1 = input("Gib eine Zahl ein: ")
eingabe2 = input("Gib eine andere Zahl ein: ")
zahl1 = int(eingabe1)
zahl2 = float(eingabe2)
ergebnis = zahl1 * (zahl2 + 10)
print(f"{zahl1} * ({zahl2} + 10) = {ergebnis}")Tippfehler
Aufgabe 4 Debugging
zahl = input("Gib eine Zahl ein: ")
resultat = intt(zahl) + 10
print(resultat)
Lösung anzeigen
intt gibt es nicht – gemeint ist int.
zahl = input("Gib eine Zahl ein: ")
resultat = int(zahl) + 10
print(resultat)Aufgabe 5 Debugging
zahl_eins = int(input("Gib die erste Zahl ein: "))
zahl_zwei = int(input("Gib die zweite Zahl ein: "))
ergebnis = zall_eins + zahl_zwei
print("Das Ergebnis ist:", ergebnis)
Lösung anzeigen
zall_eins statt zahl_eins. Python kennt nur Namen, die vorher angelegt wurden.
zahl_eins = int(input("Gib die erste Zahl ein: "))
zahl_zwei = int(input("Gib die zweite Zahl ein: "))
ergebnis = zahl_eins + zahl_zwei
print("Das Ergebnis ist:", ergebnis)Falscher Datentyp
Aufgabe 6 Debugging
zahl1 = float(input("Erste Zahl: "))
zahl2 = input("Zweite Zahl: ")
summe = zahl1 + zahl2
print("Die Summe ist:", summe)
Lösung anzeigen
Die zweite Eingabe war noch Text. Auch sie braucht float().
zahl1 = float(input("Erste Zahl: "))
zahl2 = float(input("Zweite Zahl: "))
summe = zahl1 + zahl2
print("Die Summe ist:", summe)Logikfehler: Das Programm läuft – aber rechnet falsch
Aufgabe 7 Debugging
note1 = float(input("Erste Note: "))
note2 = float(input("Zweite Note: "))
durchschnitt = note1 + note2 / 2
print(f"Ihr Durchschnitt ist {durchschnitt}.")
Lösung anzeigen
Bei 2 und 3 kam 3.5 heraus statt 2.5. Punkt vor Strich: Python teilte nur note2 durch 2. Die Klammern fehlten.
note1 = float(input("Erste Note: "))
note2 = float(input("Zweite Note: "))
durchschnitt = (note1 + note2) / 2
print(f"Ihr Durchschnitt ist {durchschnitt}.")Alles gemischt
Aufgabe 8 Debugging
# Zwei Zahlen einlesen
erste_zahl = float(input("Erste Zahl: "))
zweite_zahl = float(input("Zweite Zahl: ")
# Produkt und Quotient berechnen
produkt = erste_zahl * zweite_zahl
quotient = erste_zahl / zweite_zahl
print(f"Produkt: {produkt}, Quotient: {quotient}")
# Eine dritte Zahl zum Quotienten addieren
dritte_zahl = floatinput("Dritte Zahl: ")
gesamt = quotient + drtte_zahl
prit(f"Gesamtergebnis: {gesamt}")
Lösung anzeigen
Vier Fehler: Klammer in Zeile 3, floatinput → float(input(…)), drtte_zahl → dritte_zahl, prit → print. Python zeigt immer nur den ersten Fehler – nach jeder Korrektur neu ausführen!
# Zwei Zahlen einlesen
erste_zahl = float(input("Erste Zahl: "))
zweite_zahl = float(input("Zweite Zahl: "))
# Produkt und Quotient berechnen
produkt = erste_zahl * zweite_zahl
quotient = erste_zahl / zweite_zahl
print(f"Produkt: {produkt}, Quotient: {quotient}")
# Eine dritte Zahl zum Quotienten addieren
dritte_zahl = float(input("Dritte Zahl: "))
gesamt = quotient + dritte_zahl
print(f"Gesamtergebnis: {gesamt}")