In diesem kurzen Beitrag möchte ich dir die Ursache und die einfache Behebung der Fehlermeldung “IndentationError: unexpected indent” für MicroPython / Python aufzeigen.
Diese Fehlermeldung erhältst du, wenn dein Quellcode nicht korrekt formatiert ist. Der Quellcode wird in MicroPython und Python gleichermaßen formatiert, daher ist dieser Beitrag auch gleich für die Programmiersprache Python geeignet.
Wie wird Quellcode korrekt formatiert?
In der Programmiersprache Python arbeitest du nicht mit Klammern wie bei anderen Sprachen wie Java, C++, oder Php, sondern mit Einrückungen von Quellcode.
Nachfolgend ein kleines Beispiel. Es gibt die Funktion “greeting” welche die Textzeile “Hello, world!” ausgibt. In der Endlosschleife wird diese Funktion aufgerufen und danach eine Pause eingelegt, soweit so bekannt. Danach wird eine If-Bedingung gestartet und wenn diese True / Wahr ist, dann wird die Zeile “OK” ausgegeben.
import time def greeting(): print("Hello, world!") while True: greeting() time.sleep(0.5) if True: print("OK")
In dem Code ist die Zeile “print(“Hello, world!”) mit drei Leerzeichen eingerückt, ebenso bei der While-Schleife. Die If-Bedingung ist ebenso mit den drei Leerzeichen eingerückt, jedoch der Code danach, welcher zur If-Bedingung gehört, ist wiederum mit drei zusätzlichen Leerzeichen eingerückt.
In meinem Code verwende ich immer drei Leerzeichen, du kannst aber auch nur eines oder zwei oder auch mehr als drei verwenden!
Diese Formatierung muss man einhalten, denn wenn man nun ein Leerzeichen zu viel oder zu wenig verwendet, dann weiß der Compiler nicht mehr, zu welchem Codeabschnitt die Zeile gehört.
Statt Leerzeichen kannst du auch einen Tabulator / Tab verwenden. Jedoch darfst du diese wiederum nicht mischen, d.h. du musst dich einmal für eine Auswahl entscheiden und dieses im Code verfolgen.
Fehler “IndentationError: expected an indented block”
Ein weiterer Fehler, welcher in eine ähnliche Richtung geht, ist “IndentationError: expected an indented block”. Wenn du diesen Fehler erhältst, dann hast du mitten in einem Block diese Einrückung vergessen.
Nachfolgend die Zeile “print(text)”, hier fehlt die Einrückung komplett.
from time import sleep while True: text = "Hello, world!" for i in range(10): print(text) sleep(0.5)
Die Lösung ist hier ebenso recht einfach, man fügt vor der Zeile “print(text)” drei Leerzeichen ein.
Danke für diesen Beitrag. Einsteiger (wie ich) werden am Anfang sicherlich diese Erfahrung machen. Sind wir doch irgendwelche Klammern gewohnt.
CViele Grüße ULLI