119
Kapitel 5
Kontrollstrukturen
Durch Kontrollstrukturen wird festgelegt, in welcher Reihenfolge die Anweisungen eines
Programms ausgeführt werden. Die einfachste Kontrollstruktur ist die Sequenz. Anweisun-
gen, die hintereinander – oder sagen wir besser untereinander – aufgeschrieben sind, wer-
den auch in dieser Reihenfolge abgearbeitet. Ein Programm, das nur aus einer einfachen
Sequenz von Befehlen besteht, nennt man linear. Bisher sind Sie in den Programmbeispie-
len nur linearen Programmen begegnet. In diesem Kapitel werden weitere Kontrollstruktu-
ren eingeführt, nämlich
Programmverzweigungen (if, if-else, if-elif)
Aufruf von Funktionen und Methoden
Schleifen (while, for)
Sprünge (break, continue)
Abfangen von Ausnahmen (try-except)
Viele Kontrollstrukturen haben mit Bedingungen zu tun. Bedingungen sind logische Aus-
drücke, die wahr oder falsch sein können. Eine bedingte Anweisung z.B. wird nur dann aus-
geführt, wenn eine Bedingung erfüllt ist. In
while-Schleifen bestimmen Bedingungen, wie
oft eine Anweisung wiederholt werden soll. Deshalb beschäftigen wir uns zunächst mit der
Formulierung von Bedingungen.
5.1 Einfache Bedingungen
Der Ausdruck alter < 18 ist ein Beispiel für eine einfache Bedingung. Hier wird der Inhalt
der Variablen
alter mit dem Wert 18 verglichen. Ist der Wert von alter beispielsweise die
Zahl
17, ist die Bedingung erfüllt. Denn die Aussage 17 < 18 ist wahr.
5.1.1 Vergleiche
Typische Beispiele für einfache Bedingungen sind Vergleiche. Ein Vergleich ist im einfachs-
ten Fall ein Ausdruck, der aus zwei Operanden (z.B. Zahlen) und einem Vergleichsoperator
in der Mitte besteht.
Bei Python können auch Objekte unterschiedlicher Datentypen miteinander verglichen
werden. Dies macht aber nur Sinn, wenn die Datentypen zueinanderpassen. Zum Beispiel
kann man ganze Zahlen und Gleitkommazahlen miteinander vergleichen. Dagegen lässt
sich eine Zahl nicht sinnvoll mit einer Zeichenkette vergleichen. Gehören zwei Objekte zu
unvereinbaren Datentypen, so sind sie auf jeden Fall ungleich. Es kann allerdings nicht auf
sinnvolle Weise entschieden werden, welches von beiden größer oder kleiner ist.
Kapitel 5
Kontrollstrukturen
120
Will man mit Python testen, ob eine Bedingung erfüllt ist, gibt man sie im interaktiven
Modus ein. Das System liefert den Wert
True, falls die Aussage wahr ist, und False, falls sie
falsch ist.
Beispiele:
Wie in der Mathematik üblich können bei Python Vergleiche beliebig verkettet werden. Der
Term
a<b<c ist wohl geformt. Das unterscheidet Python von den meisten Programmier-
sprachen wie C, Java oder Pascal.
Operator Erklärung Beispiel Wahrheitswert
< kleiner 10 < 20 True
10 < 10 False
<=
kleiner oder gleich 10 <= 20 True
10 <= 10 True
>
größer 5.0 > 5.0 False
>= größer oder gleich "alle" >= "alt" False
== gleich "gleich" == "gleich" True
!= ungleich 2 != 3 True
is
identisch 2 is 2 True
[1] is [1] False
is not nicht identisch 1 is not 2 True
Tabelle 5.1: Vergleichsoperatoren bei Python
>>> "Haus" == 2 # Objekte unterschiedlichen Typs
False
>>> 2 < 3 # Objekte gleichen Typs
True
>>> 0 == 0.0 # gleiche Zahlen unterschiedlichen Typs
True
>>> 2 < 45 < 78
True
linker Operand rechter Operand
alter < 18
Vergleichsoperator
121
5.1
Einfache Bedingungen
Jeder Vergleichsoperator vergleicht die Werte zweier Objekte. Die Semantik des Vergleichs
hängt vom Datentyp ab. Wir gehen im Folgenden davon aus, dass Objekte gleichen Typs
miteinander verglichen werden.
Zahlen werden arithmetisch verglichen, wie man es aus der Mathematik gewohnt ist. Auf
komplexe Zahlen können die Operatoren
>, >=, < und <= nicht angewendet werden. Der Test
auf Gleichheit ist aber möglich. Beispiel:
Zeichenketten werden gemäß der lexikografischen Ordnung verglichen. Das bedeutet Fol-
gendes: Zuerst betrachtet man die ersten Buchstaben der beiden Strings. Wenn der erste
String mit einem Zeichen beginnt, das im Alphabet vor dem ersten Zeichen des zweiten
Strings kommt, ist der erste String kleiner.
Wenn die ersten Zeichen der beiden Strings gleich sind, vergleicht man die zweiten Zei-
chen. Liegt das zweite Zeichen des ersten Strings im Alphabet vor dem zweiten Zeichen des
zweiten Strings, ist der erste String kleiner usw. Beispiel:
"Aal" ist kleiner als "Achtung". Die beiden Worte beginnen mit A, aber der zweite Buch-
stabe von
"Aal" ist a und liegt im Alphabet vor c.
Probieren Sie folgende Anweisung aus:
Das heißt,
"a" ist größer als "B", obwohl doch a im Alphabet vor B kommt. Warum? Grund-
lage für die Ordnung der Buchstaben in einfachen Zeichenketten ist die Unicode-Numme-
rierung (siehe Anhang A). Unicode ordnet jedem Zeichen eine Nummer zu. Das Zeichen
mit der kleineren Unicode-Nummer gilt als kleiner. Nun ist
66 die Unicode-Nummer von B
und 97 die Nummer von a. Folglich liegt a hinter B.
Mit dem Operator
is wird die Identität zweier Objekte verglichen. Identität ist nicht das-
selbe wie Gleichheit. Zwei gleiche Objekte müssen nicht unbedingt identisch sein. Python
ist in einem grundlegenden Sinne eine objektorientierte Sprache. Auch Literale, die Werte
(Zahlen oder Strings) darstellen, sind Objekte, die eine Identität besitzen. Die Identität wird
mit einer Nummer bezeichnet, die man mit der Funktion
id() abfragen kann:
>>> 2 < 23 <= 10
False
>>> 2 * (1+1j) == 2+2j
True
>>> "abends" < "morgens"
True
>>> "Aal" < "Achtung"
True
>>> "a" > "B"
True

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.