Kontrollstrukturen¶
Die folgenden Kontrollstrukturen können zur Steuerung eines Programms verwendet werden, wenn einzelne Code-Blöcke nur unter bestimmten Bedingungen oder auch mehrfach ausgeführt werden sollen. In Python werden dabei keine Klammern zur Markierung von Code-Blöcken verwendet; stattdessen werden Einrückungen zur Gruppierung und Kenntlichmachung einzelner Code-Blöcke genutzt. Üblicherweise wird für jede Einrückungstiefe ein Tabulator-Zeichen (entspricht vier Leerzeichen) verwendet.
if
, elif
und else
– Fallunterscheidungen¶
Mit Hilfe von if
-Abfragen ist es möglich, Code-Teile nur unter bestimmten
Bedingungen ablaufen zu lassen. Ist die if
-Bedingung wahr, so wird der
anschließende, mit einer Einrückung hervorgehobene Code ausgeführt.
if bedingung:
... Anweisungen ...
Optional können nach einem if
-Block mittels elif
eine oder mehrere
zusätzliche Bedingungen formuliert werden, die jedoch nur dann untersucht
werden, wenn die erste if
-Bedingung falsch ist. Schließlich kann auch eine
else
-Bedingung angegeben werden, die genau dann ausgeführt wird, wenn die
vorherige Bedingung (beziehungsweise alle vorherigen Bedingungen bei Verwendung
eines elif
-Blocks) nicht zutreffen.
Insgesamt kann eine Fallunterscheidung beispielsweise folgenden Aufbau haben:
if bedingung_1:
...
elif bedingung_2:
...
else:
...
Bei der Untersuchung der einzelnen Bedingungen werden die Werte von Variablen häufig mittels Vergleichsoperatoren überprüft. Mehrere Teilbedingungen können zudem mittels logischer Operatoren zu einer Gesamtbedingung verknüpft werden:
- Werden zwei Bedingungen mit
and
verknüpft, so ist das Ergebnis genau dann wahr, wenn beide Bedingungen erfüllt sind. - Werden zwei Bedingungen mit
or
verknüpft, so ist das Ergebnis dann wahr, wenn mindestens eine der beiden Bedingungen (oder beide zugleich) erfüllt sind. - Der Operator
not
kehrt den Wahrheitswert einer Bedingung um, eine wahre Bedingung liefert alsoFalse
als Ergebnis, eine falsche BedingungTrue
.
Da die logischen Operatoren eine geringer Priorität haben als die
Vergleichsoperatoren, können mehrere Vergleiche auch ohne Klammern mittels
and
beziehungsweise or
verbunden werden.
# Beispiel:
var_1 = (578 + 94) / 12
var_2 = (1728) / 144
if var_1 > var_2:
print("var_1 is larger als var_2.")
elif var_1 < var_2:
print("var_1 is smaller als var_2.")
else:
print("var_1 is equal var_2.")
# Ergebnis: var_1 is equal var_2.
Beinhaltet eine Variable einen Listentyp, beispielsweise ein
Tupel, einen String , ein Dict
oder ein Set, so ergibt if var
den Wert False
, falls die Länge der Liste
gleich Null ist, und True
, falls die jeweilige Liste mindestens ein Element
beinhaltet.
while
und for
– Schleifen¶
Mittels Schleifen kann ein Code-Abschnitt wiederholt ausgeführt werden. Python
bietet hierfür zweierlei Möglichkeiten: Mittels einer while
-Schleife wird
Code so lange ausgeführt, solange eine angegebene Bedingung wahr ist; mit einer
for
-Schleife lassen sich auch komplexere Schleifentypen erzeugen.
while
-Schleifen
Eine while
-Schleife hat allgemein folgende Syntax:
while bedingung:
... Anweisungen ...
Ist die Bedingung wahr, so werden die im unmittelbar folgenden Block stehenden Anweisungen ausgeführt. Vor jedem weiteren Durchlauf wird wieder geprüft, ob die angegebene Bedingung erfüllt ist; sobald dies nicht der Fall ist, wird die Schleife abgebrochen.
Unmittelbar an den while
-Block kann optional auch noch ein else
-Block
angefügt werden, der genau einmal ausgeführt wird, sobald die
while
-Bedingung das erste mal den Wahrheitswert False
annimmt. Damit
kann beispielsweise eine Programmstruktur folgender Art geschaffen werden:
while eingabe != passwort:
... weitere Texteingabe ...
else:
... richtiges Passwort ...
break
und continue
Der Ablauf einer while
kann durch folgende beide Schlüsselwörter im Inneren
des Anweisungsblocks beeinflusst werden:
- Mittels
break
wird die Schleife unmittelbar an der jeweiligen Stelle beendet. - Mittels
continue
kann der Rest des aktuellen Schleifendurchlaufs übersprungen werden; die Schleife wird anschließend mit dem nächsten Schleifendurchlauf fortgesetzt.
Mittels der break
-Anweisung können beispielsweise Endlos-Schleifen
programmiert werden, die nur unter einer bestimmten Bedingung beendet werden:
while True:
... Anweisungen ...
if bedingung:
break
Die Schlüsselwörter break
und continue
können ebenfalls in
for
-Schleifen eingesetzt werden.
for
-Schleifen
Eine for
-Schleife hat allgemein folgende Syntax:
for var in iterierbares-objekt:
... Anweisungen ...
Ein iterierbares Objekt kann beispielsweise eine Liste, ein Tupel, oder auch ein String sein. Im einfachsten Fall kann auch mittels der Funktion range() ein iterierbares Objekt mit bestimmter Länge erzeugt werden:
summe = 0
for i in range(1,10):
summe += i
print(summe)
# Ergebnis: 45
Im diesem Beispiel durchläuft die Zählvariable i
alle Werte im angegebenen
Zahlenbereich, wobei bei Verwendung von range()
die untere Schranke zum
Zahlenbereich dazugehört, die obere jedoch nicht; es werden im obigen Beispiel
also alle Zahlen von 1
bis 9
aufsummiert.
pass
– Die Platzhalter-Anweisung¶
Beim Entwickeln eines Programms kann es passieren, dass eine Kontrollstruktur
Funktion oder Fehlerroutine zunächst nur teilweise implementiert wird. Eine
Anweisung ohne Inhalt würde allerdings einen Syntaxfehler zur Folge haben. Um
dies zu vermeiden, kann die pass
-Anweisung eingefügt werden, die keine
weitere Bedeutung für das Programm hat. Beispiel:
var_1 = None
if var_1 is None:
pass
else:
print( "The value of var_1 is %s." % var_1 )
Die pass
-Anweisung stellt somit eine Erleichterung beim Entwickeln von
Programmen dar, da man sich mit ihrer Hilfe zunächst an wichtigeren
Programmteilen arbeiten kann. In fertigen Programmen werden pass
-Anweisungen
nur selten verwendet.