Appearance
6 — 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 Kommandozeile von Thonny eine Fehlermeldung ausgegeben:

In der Fehlermeldung lassen sich wichtige Informationen erkennen:
- Auf der letzten Zeile steht die eigentliche Fehlermeldung, im Beispiel oben IndentationError: unexpected indent.
- Auf der vorletzten Zeile steht, in welchem Python-Programm und auf welcher Zeile der Fehler aufgetreten ist, im Beispiel oben in
fehlerhaft.pyauf der Zeile 13.
Mit einem Klick auf den Link kann man direkt zur Zeile springen, welche den Fehler verursacht hat.
Häufige Fehler
Import Error
ImportError: You are running from an interactive interpreter. 'import pgtrun' only works when you are running a Python file.
Ein Pygame Turbo-Programm wird ausgeführt, bevor die Programm-Datei gespeichert wurde. Im Gegensatz zu «normalen» Python-Programmen müssen Pygame Turbo-Programme immer zuerst gespeichert werden.
In Thonny hat ein ungespeichertes Programm im Tab die Bezeichnung «unbenannt». Speichern Sie das Programm mit der Dateiendung .py, um diesen Fehler zu beheben.


Name Error
NameError: name '…' is not defined
Der angegebene Name ist Python nicht bekannt. Typische Szenarien sind:
Pygame Turbo-Befehle werden verwendet, aber das
pgtrun-Modul wird nicht importiert:pythonfigur = Actor("figur_01.png")Korrektur:
pythonimport pgtrun alice = Actor("figur_01.png")Der Grossschreibung eines Namens ist falsch (
Figurstattfigur):pythonimport pgtrun figur = Actor("figur_01.png") Figur.x = 400Korrektur:
pythonimport pgtrun figur = Actor("figur_01.png") figur.x = 400Ein Text wurde nicht in Anführungszeichen gesetzt und wird deshalb von Python als Name einer Variable interpretiert:
pythonimport pgtrun TITLE = BeispielKorrektur:
pythonimport pgtrun TITLE = "Beispiel"
Indentation Error
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 oder mehreren Leerzeichen:
pythonimport pgtrun figur = Actor("figur_01.png")Korrektur:
pythonimport pgtrun figur = Actor("figur_01.png")
IndentationError: expected an indented block
Nach einer
if- oderdef-Anweisung fehlt eine eingerückte Anweisung:pythonimport pgtrun def draw(): figur.draw() figur = Actor("figur_01.png")Korrektur:
pythonimport pgtrun def draw(): figur.draw() figur = Actor("figur_01.png")
Syntax Error
SyntaxError: invalid syntax
Normalerweise ein Fehler mit der Interpunktion. Es fehlt ein Zeichen, z.B. ein Doppelpunkt :, ein Gleichheitszeichen = oder ein Punkt .
Am Ende einer
def- oderif-Anweisung fehlt ein Doppelpunkt:.pythonimport pgtrun def draw() figur.draw() figur = Actor("figur_01.png")Korrektur:
pythonimport pgtrun def draw(): figur.draw() figur = Actor("figur_01.png")Zwischen den Namen eines Objekts (
figur) und dem Namen einer Variable (x) fehlt der Punkt..pythonimport pgtrun figur = Actor("figur_01.png") figur x = 400Korrektur:
pythonimport pgtrun figur = Actor("figur_01.png") figur.x = 400Zwischen einem Variablennamen (
figur.x) und dem Wert (400) fehlt das Gleichheitszeichen=.pythonimport pgtrun figur = Actor("figur_01.png") figur.x 400Korrektur:
pythonimport pgtrun figur = Actor("figur_01.png") figur.x = 400
Key Error
Achtung: Dieser Fehler tritt in Pygame Turbo auf. Der angegeben Link führt zu der Datei loaders.py, welche zu Pygame Turbo gehört. Sie darf auf keinen Fall verändert werden!
KeyError: "No 'images' directory found to load image '…'."
Dieser Fehler bedeutet, dass Pygame Turbo den Ordner images nicht finden kann. Er muss sich im selben Ordner befinden, wo sich das aktuelle Programm befindet. Der Ordner muss images heissen, alles in Kleinbuchstaben geschrieben.
KeyError: "No image found like '…'. Are you sure the image exists?"
Dieser Fehler bedeutet, dass die Bilddatei, die in Actor() angegeben wurde, nicht gefunden werden kann.
python
import ptzrun
figur = Actor("figur01.png")Korrektur:
python
import pgtrun
figur = Actor("figur_02.png")pgturbo.loaders.InvalidCase
pgturbo.loaders.InvalidCase: 'images/…' is not lower case.
Bei Pygame Turbo ist es nötig, dass die Dateinamen der Bilddateien nur aus Kleinbuchstaben (und dem Unterstrich _) bestehen.
Dieser Fehler tritt auf, wenn der Dateiname bei Actor() einen Grossbuchstaben enthält.
python
import pgtrun
figur = Actor("Figur_01.png")Korrektur:
python
import pgtrun
figur = Actor("figur_01.png")✏️ Aufgabe 6.1 — Umgang mit Fehlern
- Kopieren Sie den unten stehenden Code in ein neues Python-Skript.
- Korrigieren Sie alle Fehler, die gemeldet werden mit Hilfe der oben stehenden Hinweise.
- Die Figur ist nicht sichtbar. Korrigieren Sie das Problem.
- Die Figur sollte am linken Rand auftauchen, wenn sie den rechten Rand erreicht. Dies passiert aber nicht. Korrigieren Sie das Problem.
py
def draw()
figur.draw()
screen.fill(Hintergrundfarbe)
def update():
figur x = figur.x + 2
if figur.y > WIDTH
figur.x = 0
WIDTH = 800
HEIGHT = 600
TITLE = Rennen
hintergrundfarbe = 11, 102, 35
figur = Actor("Figur_01.png")
figur.x = WIDTH : 2
figur.y = HEIGTH * 1:5
pgtrun.go()