NB_01_Fehler¶
(c) 2026 Technische Hochschule Augsburg - Fakultät für Informatik - Prof.Dr.Nik Klever - Impressum
Fehler¶
Es gibt (mindestens) zwei unterscheidbare Arten von Fehlern: Syntaxfehler und Ausnahmen.
Syntaxfehler¶
Syntaxfehler, auch bekannt als Parsing-Fehler, sind vielleicht die häufigste Art von Fehlern beim Lernen von Python:
while True print('Hello world')
File "<ipython-input-2-2b688bc740d7>", line 1 while True print('Hello world') ^ SyntaxError: invalid syntax
Der Parser wiederholt die Zeile mit dem Fehler und zeigt mit einen kleinen Pfeil an, der auf den ersten Punkt in der Zeile zeigt, in der der Fehler erkannt wurde. Der Fehler wird durch den dem Pfeil vorangehenden Token verursacht (oder zumindest erkannt): In dem obigen Beispiel wird der Fehler bei der Funktion print() erkannt, da vor dieser Funktion ein Doppelpunkt (':') fehlt. Dateiname und Zeilennummer werden angegeben, so dass hieraus klar wird, wo gesucht werden kann, falls die Eingabe von einem Skript kam.
a = 1
b = 2
if a < b:
c = b + a
else
c = b * a
File "<ipython-input-3-abeb565d81d6>", line 5 else ^ SyntaxError: invalid syntax
Im Jupyter Notebook wird als File-Name immer ein zufällig konstruierter Dateiname, beginnend mit ipython-input verwendet, während bei physikalisch existierenden Dateien der entsprechende File-Name ausgegeben wird, wie im folgenden Beispiel mit dem Dateinamen fehlertest.py zu sehen ist:
%%writefile fehlertest.py
a = 1
b = 2
if a < b:
c = b + a
else
c = b * a
Writing fehlertest.py
!python fehlertest.py
File "fehlertest.py", line 5
else
^
SyntaxError: invalid syntax
Analog wird der Syntaxfehler auch ausgegeben, wenn die entsprechende Datei importiert wird, daher ist es immer sinnvoll jede Python-Modul-Datei alleine auf ihre Syntax und korrekte Durchführung zu testen, bevor sie in ein Paket übernommen wird:
import fehlertest
Traceback (most recent call last): File "/home/root/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2910, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-6-5fc9d23264ac>", line 1, in <module> import fehlertest File "/home/nik/Public/SE2017FS02/Skript/pre_chapter/Fehler und Ausnahmen/fehlertest.py", line 5 else ^ SyntaxError: invalid syntax
Einrückungsfehler (Indentation Error)¶
Ein weiterer Fehler, der ein spezieller Syntaxfehler ist und ebenfalls noch vor jeglicher Ausführung auftaucht, ist der Einrückungsfehler (Indentation Error):
if 1 < 2:
print("Stimmt")
File "<ipython-input-7-f7cf265bb251>", line 2 print("Stimmt") ^ IndentationError: expected an indented block
Ein spezieller Einrückungsfehler, ist der TabError, der eine inkonsistente Benutzung von Tabulatorzeichen und Leerzeichen anzeigt:
%%writefile indentationtest.py
def test():
if 10 < 2:
print("Stimmt")
else:
print("Stimmt nicht")
test()
Writing indentationtest.py
import indentationtest
Traceback (most recent call last): File "/home/root/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2910, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-9-e1645c576bd8>", line 1, in <module> import indentationtest File "/home/nik/Public/SE2017FS02/Skript/pre_chapter/Fehler und Ausnahmen/indentationtest.py", line 4 else: ^ TabError: inconsistent use of tabs and spaces in indentation
%%Mooc MoocCheckboxesAssessment
Syntax Error
Worin erkennt man bei einem Syntaxfehler an welcher Stelle im Code der Fehler passiert ist ?
%%Mooc Video
Weitere Literatur¶
%%Mooc WebReference