3. Kontrollstrukturen

Python stellt prinzipiell alle aus anderen Programmiersprachen bekannten Kontrollstrukturen für Schleifen und Fallunterscheidungen bereit. Speziell an Python ist, dass Blöcke innerhalb von Kontrollkonstrukten nicht durch geschweifte Klammern, sondern durch Einrückung (Indent) definiert werden. Das Einrücken kann entweder mit dem Tabulator oder durch 4 Leerzeichen realisiert werden.

Da die Kontrollstrukturen aus anderen Sprachen bekannt sind, werden sie hier nur rudimentär in Form von Beispielen vorgestellt.

3.1. Fallunterscheidungen

3.1.1. if-then-else

Die allgemeinste Form einer if-then-else Bedingung lautet:

if Bedingung:
        Anweisungsblock
elif Bedingung:
        Anweisungsblock
elif Bedingung:
        Anweisungsblock
else:
        Anweisungsblock

Sämtliche elif-Blöcke und der else-Block sind optional. Es können beliebig viele elif-Blöcke eingebunden werden. Zu beachten ist der Doppelpunkt am Ende der Kontrollzeilen. Die Bedingungen werden meist unter Verwendung von Operatoren formuliert:

  • Arithmetische Vergleichsoperatoren: ==, !=, <, <=, >, >=
  • Logische Operatoren: and, or, not.

Beispiel:

>>> x=3
>>> y=7
>>> if x<5 and y > 8:
...    print 'Oben links'
... elif x<5 and y <=8:
...    print 'Unten links'
... elif x>=5 and y > 8:
...    print 'Oben rechts'
... else:
...    print 'Unten rechts'
...
Unten links

3.1.2. Conditional Expressions

Mit Conditional Expressions (bedingte Ausdrücke) können bedingte Variablenzuweisungen deutlich kompakter als mit if-then-else Anweisungen geschrieben werden. So kann z.B. anstelle von

>>> wort='start'
>>> if wort=='start':
...    x='los'
... else:
...    x='halt'
...
>>> print x
los

die gleiche Zuweisung mit der Conditional Expression

>>> wort='start'
>>> x=('los' if wort=='start' else 'halt')
>>> print x
los

geschrieben werden.

Die allgemeine Form einer Condtional Expression ist:

(A if Bedingung else B)

Daraus ist ersichtlich, dass die Conditional Expression nicht nur im Zusammenhang mit einer Zuweisung stehen kann, sondern z.B. auch als Argument einer Methode übergeben werden kann:

>>> print ('los' if wort=='start' else 'halt')
los

3.2. Schleifen

Python unterstützt sowohl for- als auch while-Schleifen.

3.2.1. While-Schleifen

Die allgemeinste Form einer While-Schleife lautet:

while Bedingung:
        Anweisungsblock
        if Bedingung:
                Anweisungsblock
                continue
        Anweisungsblock
        if Bedingung:
                Anweisungsblock
                break
        Anweisungsblock
else:
        Anweisungsblock

Hierbei sind die Blöcke um continue um break und um else optional. Mit dem Schlüsselwort continue wird eine Schleifeniteration vorzeitig verlassen und gegegebenenfalls die nächste Iteration der Schleife gestartet. Mit break wird die gesamte While-Schleife vorzeitig verlassen. Der else-Block nach der While-Schleife wird genau einmal ausgeführt, nachdem die While-Schleife regulär beendet wurde. Der else-Block wird nicht ausgeführt, wenn die Schleife vorzeitig durch break beendet wird.

3.2.2. For-Schleifen

Die allgemeinste Form einer For-Schleife lautet:

for Variable in Objekt:
        Anweisungsblock
        if Bedingung:
                Anweisungsblock
                continue
        Anweisungsblock
        if Bedingung:
                Anweisungsblock
                break
        Anweisungsblock
else:
        Anweisungsblock

Die Blöcke um continue, break und else haben die gleiche Bedeutung wie im Zusammenhang mit while-Schleifen. Die Zählvariable läuft über alle Elemente eines iterierbaren Datentyps. Dazu gehören z.B. die Sequentielle Datentypen oder die Dictionaries. Soll die Variable nur über einen Bereich ganzer Zahlen iterieren, dann bietet sich als Objekt eine mit der range()-Funktion erzeugte Liste an.

Beispiel: Iteration über Liste ganzer Zahlen

>>> for x in range(4,9,2):
...    print x
...
4
6
8

Beispiel: Iteration über Schlüssel eines Dictionaries

>>> d=dict((('alter',10),('geschlecht','m'),('wohnort', 'stuttgart')))
>>> for x in d:
...    print x,":  ",d[x]
...
geschlecht :   m
wohnort :   stuttgart
alter :   10

List comprehension: Mit for-Schleifen lassen sich auch Listen kompakt erzeugen, z.B.

>>> persDesc=[d[x] for x in d if x !='wohnort']
>>> persDesc
['m', 10]

Die Zählvariable kann auch aus mehreren Elementen bestehen, wie folgendes Beispiel veranschaulicht:

>>> for k,v in d.items():
...    print k,v
...
geschlecht m
wohnort stuttgart
alter 10

Die enumerate-Funktion, angewandt auf einen iterierbaren Typ, liefert nicht nur die einzelnen Elemente, sondern darüber hinaus einen Zählindex:

>>> personen =[hanny, nanny, fanny]
>>> for index,person in enumerate(personen):
...     print index,person
...
0 hanny
1 nanny
2 fanny

Inhalt

Vorheriges Thema

2. Datentypen

Nächstes Thema

4. Module

Diese Seite