Python: Umgang mit Fehlern
Umgang mit Fehlern
Fehler erkennen
Da Python-Programme schrittweise ausgeführt werden, kann es sein, dass das Programm plötzlich abbricht, weil Python auf einer Zeile ein Fehler entdeckt hat. In diesem Fall wird in der Shell von Thonny eine Fehlermeldung ausgegeben:

In der Fehlermeldung lassen sich wichtige Informationen erkennen:
-
Auf der letzten Zeile steht die eigentliche Fehlermeldung, im Beispiel oben NameError: name 'Forward' is not defined.
-
Auf der vorletzten Zeile steht, in welchem Python-Programm und auf welcher Zeile der Fehler aufgetreten ist, im Beispiel oben in turtle_fehler.py auf der Zeile 3.
Mit einem Klick auf den Link kann man direkt zur Zeile springen, welche den Fehler verursacht hat.
Thonny zeigt zusätzlich im Bereich Assistant eine Erklärung zum Fehler und mögliche Fehlerursachen an. Der Bereich kann über das Menü View ‣ Assistant eingeblendet werden.
Häufige Fehler
NameError
NameError: name '…' is not defined
Der angegebene Name ist Python nicht bekannt. Typische Szenarien sind:
-
Turtle-Befehle werden verwendet, aber das Turtle-Modul wird nicht importiert:
forward(100)
Korrektur:
from turtle import * forward(100)
-
Der Grossschreibung eines Befehls ist falsch (
Forward
stattforward
):from turtle import * Forward(100)
Korrektur:
from turtle import * forward(100)
-
Der Rechtschreibung eines Befehls ist falsch (
pencolour
stattpencolor
). In Programmiersprachen wird üblicherweise die amerikanische Rechtschreibung verwendet:from turtle import * pencolour(100)
Korrektur:
from turtle import * pencolor(100)
IndentationError
IndentationError: unexpected indent
Vor einem Befehl steht ein Leerzeichen. Das ist nicht erlaubt, das Einrücken von Befehlen hat eine spezielle Bedeutung in Python. Typische Szenarien sind:
-
Eine Zeile beginnt mit einem Leerzeichen:
from turtle import * forward(100)
Korrektur:
from turtle import * forward(100)
IndentationError: expected an indented block
-
Nach einer
for
- oderdef
-Anweisung fehlt ein eingerückter Befehl:from turtle import * for i in range(4): forward(100)
Korrektur:
from turtle import * for i in range(4): forward(100)
SyntaxError
SyntaxError: invalid syntax
Normalerweise ein Fehler mit der Interpunktion. Es fehlt ein Zeichen, z.B. ein Gleichheitszeichen =
oder ein Punkt .
-
Am Ende eine
for
- oderdef
-Anweisung fehlt ein Doppelpunkt:from turtle import * for i in range(4) forward(100)
Korrektur:
from turtle import * for i in range(4): forward(100)
TurtleGraphicsError
turtle.TurtleGraphicsError: bad color string: …
Im Turtle-Befehl fillcolor
oder pencolor
wird ein Namen für eine Farbe angegeben, welche von Python nicht verstanden wird. Beispiel:
-
Ein Namen einer Farbe wird falsch geschrieben:
from turtle import * pencolor("dark tortoise")
Korrektur:
from turtle import * pencolor("dark turquoise")
turtle.TurtleGraphicsError: bad color sequence: (…, …, …)
Im Turtle-Befehl fillcolor
oder pencolor
wird eine RGB-Farbe angegeben, welches von Python nicht verstanden wird. Beispiel:
-
Es wird ein Rot-, Grün- oder Blauwert angegeben, der nicht zwischen 0 und 1 liegt.
from turtle import * pencolor(2, 1, 0)
Korrektur:
from turtle import * pencolor(1, 0.5, 0)
Quellen & Attribution
- Turtle Errors Stefan Rothe — „Turtle Errors“ (), CC BY-NC-SA 4.0 (https://creativecommons.org/licenses/by-nc-sa/4.0/) · Lizenzdetails NCSA
Challenge
Aufgabe – Flagge der Schweiz
-
Kopieren Sie das folgende Python-Programm nach Thonny und speichern Sie es als schweiz.py.
-
Das Programm sollte die Flagge der Schweiz zeichnen, aber es enthält Fehler. Korrigieren Sie alle Fehler.
-
Obschon das Programm fehlerfrei läuft, wird das weisse Kreuz nicht ausgefüllt. Wieso? Können Sie den Fehler finden?
from turtel import *
fillcolor("rot")
penup()
begin_fill()
for i in range(4)
forward(250)
left(90)
end_fill()
forward(150)
links(90)
forward(50)
fillcolor("white")
begin_fill()
for i in range(4):
forward(50)
right(90)
forward(50)
left(90)
forward(50)
left(90)
end_fill