Blöcke
In Python sind Code-Blöcke eingerückt. Diese Einrückung muss konsistent erfolgen, d.h. alle Zeilen eines Blocks müssen gleich weit eingerückt sein. Obwohl im Prinzip auch Tabs als Zeichen zulässig sind, so sind Leerzeichen Usus. Ein Block beginnt mit einem Doppelpunkt :
und endet, wenn die Einrückung wieder zurückgenommen wird:
if True:
print("Das ist die erste Zeile des Blocks.")
print("Das ist die zweite Zeile des Blocks.")
Das ist deswegen wichtig, weil z.B. ausgedrückt werden muss, welche Teile eines Codes für Schleifen und Bedingungen relevant sind. Ein Beispiel:
value = 42
if value > 10:
print ("Die Zahl ist größer als 10.") # der erste Block
if value > 20:
print ("Die Zahl ist größer als 20.") # der zweite Block
print ("Fertig.")
Hier sind zwei Blöcke definiert (siehe Kommentare). Das bedeutet, dass die ersten beiden Print-Anweisungen immer dann ausgeführt werden, wenn die darüberliegenden Bedingungen erfüllt sind. Die letzte Print-Anweisung wird immer ausgeführt. Rückt man den zweiten Block auch ein, dann ändert sich das Verhalten:
value = 42
if value > 10:
print ("Die Zahl ist größer als 10.") # der erste Block beginnt hier
if value > 20:
print ("Die Zahl ist größer als 20.") # der zweite Block besteht aus dieser einen Zeile
# hier endet der erste Block
print ("Fertig.")
Hier sind die beiden Blöcke verschachtelt: der zweite Block wird nur dann ausgeführt, wenn die Bedingung des ersten Blocks erfüllt ist. Die letzte Print-Anweisung wird immer ausgeführt. Eine verschachtelte Struktur erfordert immer, dass ein eingerückter Block immer vollständig in dem übergeordneten Block enthalten ist. Das ist hier der Fall.
Formal sind verschachtelte Bedingungen und verknüpfte Bedingungen äquivalent:
value = 42
if value % 3 == 0:
if value % 7 == 0:
print("Die Zahl ist durch 3 und 7 teilbar.")
ist äquivalent zu
value = 42
if value % 3 == 0 and value % 7 == 0:
print("Die Zahl ist durch 3 und 7 teilbar.")