Verzweigungen
Wenn wir einen Teil unseres Codes nur unter bestimmten Umständen ausführen lassen möchten, dann verwenden wir das Schlüsselwort if
:
In folgendem Beispielprogramm wird ein "Würfel" gerollt. Wenn eine 6 gewürfelt wird, dann soll der Text "Gewonnen!" ausgegeben werden. In jedem Fall (egal ob man gewinnt oder verliert) soll am Schluss der Text "Spiel vorbei." ausgegeben werden.
from random import randint
wurf = randint(1, 6)
if wurf == 6:
print("Gewonnen!")
print("Spiel vorbei.")
Auf Zeile 3
prüfen wir, die Zahl 6 gewürfelt wurde. Zeile 6
wird nur ausgeführt, wenn diese Bedingung erfüllt ist — aus diesem Grund ist sie eingerückt. Zeile 8
ist nicht mehr eingerückt und ist deshalb nicht von der Bedingung betroffen. Diese Zeile wird also in jedem Fall ausgeführt. Wäre sie ebenfalls eingerückt, dann würde auch Zeile 8
nur dann ausgeführt, wenn eine 6 gewürfelt wird.
Was, wenn wir in allen anderen Fällen (also 1-5) nun den Text "Verloren!" ausgeben möchten? Dazu verwenden wir das Schlüsselwort else
:
from random import randint
wurf = randint(1, 6)
if wurf == 6:
print("Gewonnen!")
else:
print("Verloren!")
print("Spiel vorbei.")
Ein else
bezieht sich immer auf ein if
. Es ist das "andernfalls" zu einem "wenn". Das else
muss damit auch in der gleichen Spalte stehen wie das dazugehörige if
.
Das Schlüsselwort elif
ist eine Kombination aus else
und if
: Es ist ein "andernfalls", das aber selbst auch wieder eine Bedingung prüft. In folgendem Beispiel verwenden wir es, um den Text "Knapp daneben..." auszugeben, wenn der Wurf nicht 6, sondern 5 war.
from random import randint
wurf = randint(1, 6)
if wurf == 6:
print("Gewonnen!")
elif wurf == 5:
print("Knapp daneben...")
else:
print("Verloren!")
print("Spiel vorbei.")
Die Zeilen 5
bis 10
des obigen Programms können wir also folgendermassen lesen:
- Wenn der Wurf eine 6 ist, dann gibt "Gewonnen!" aus.
- Andernfalls, wenn der Wurf eine 5 ist, dann gib "Knapp daneben..." aus.
- Andernfalls, gib "Verloren!" aus.
Der Text "Spiel vorbei" ist unabhängig von dieser Verzweigung und wird somit immer ausgegeben.
Tipps für den Umgang mit Verzweigungen
- Ein
elif
und einelse
beziehen sich immer auf das davorstehendeif
, welches in der gleichen Spalte steht. Einelif
oder einelse
ohneif
ist nicht erlaubt. - Das
elif
ist optional. Zu einemif
können beliebig vieleelif
gehören. - Das
else
ist optional. Zu einemif
gehört höchstens einelse
. - Das
else
ist der "letzte Ausweg", wenn alleif
- undelif
-Bedingungen nicht zutreffen. Es hat damit selbst keine Bedingung. - Folgende Reihenfolge muss immer eingehalten werden (und wird von Python von oben nach unten abgearbeitet):
if
- alle
elif
(falls vorhanden) else
(falls vorhanden)
- Die Einrückungen funktionieren beim
if
,elif
undelse
genau gleich wie bei derfor
- undwhile
-Schliefe.
Kombinierte if
-Verzweigungen
Es können mehrere if
-Befehle sequenziell nacheinander stehen:
uhrzeit = 5
if uhrzeit < 6:
print("Es ist Nacht.")
else:
print("Es ist Tag.")
if uhrzeit > 17:
print("Feierabend!")
else:
print("Noch nicht Feierabend :(")
Hier stehen zwei separate, unabhängige if
-Verzweigungen nacheinander: die erste beginnt auf Zeile 3
und geht bis Zeile 6
, die zweite beginnt auf Zeile 8
und geht bis Zeile 11
. Das else
auf Zeile 5
bezieht sich also auf das if
auf Zeile 3
. Das else
auf Zeile 10
bezieht sich auf das if
auf Zeile 8
.
Mit der Zuweisung uhrzeit = 5
produziert das obige Beispielprogramm in der Kommandozeile folgende Ausgabe:
Es ist Nacht.
Noch nicht Feierabend :(
if
-Verzweigungen können auch verschachtelt werden:
uhrzeit = 7
if uhrzeit > 6:
print("Der Tag hat begonnen!")
if uhrzeit > 8:
print("Zeit für die Arbeit")
else:
print("Gemütlich aufstehen und zmörgelä")
else:
print("Weiterschlafen...")
Hier gibt es eine äussere Verzweigung von Zeile 3
bis Zeile 12
, mit einer inneren Verzweigung von Zeile 6
bis Zeile 9
. Das äussere else
auf Zeile 11
bezieht sich auf das äussere if
auf Zeile 3
. Das innere else
auf Zeile 8
bezieht sich auf das innere if
auf Zeile 6
. Auf die innere Verzweigung treffen wir bei der Ausführung nur, wenn die if
-Bedingung auf Zeile 3
zutrifft.
Mit der Zuweisung uhrzeit = 7
produziert das obige Beispielprogramm in der Kommandozeile folgende Ausgabe:
Der Tag hat begonnen!
Gemütlich aufstehen und zmörgelä