Die if
-Anweisung wird benutzt, um eine Bedingung abzuprüfen.
Falls diese Bedingung erfüllt ist, wird ein Block von Anweisungen ausgeführt
(der so genannte if-Block), andernfalls wird ein
anderer Block von Anweisungen ausgeführt (der so genannte else-Block).
Die else
-Klausel ist dabei optional.
Beispiel 6.1. Gebrauch der if-Anweisung (if.py)
#!/usr/bin/python zahl = 23 geraten = int(raw_input('Geben Sie eine ganze Zahl ein: ')) if geraten == zahl: print 'Glueckwunsch, Sie haben es erraten.' # ein neuer Block beginnt hier print "(Aber Sie gewinnen leider keinen Preis!)" # und hier hoert er auf elif geraten < zahl: print 'Nein, die Zahl ist etwas hoeher.' # noch ein Block # Sie koennen in dem Block tun, was sie wollen ... else: print 'Nein, die Zahl ist etwas niedriger.' # hierhin gelangt man, wenn geraten > zahl ist print 'Fertig.' # Diese letzte Anweisung wird immer am Ende nach der if-Anweisung ausgefuehrt
$ python if.py Geben Sie eine ganze Zahl ein: 50 Nein, die Zahl ist etwas niedriger. Fertig. $ python if.py Geben Sie eine ganze Zahl ein: 22 Nein, die Zahl ist etwas hoeher. Fertig. $ python if.py Geben Sie eine ganze Zahl ein: 23 Glueckwunsch, Sie haben es erraten. (Aber Sie gewinnen leider keinen Preis!) Fertig.
In diesem Programm nehmen wir als Benutzereingabe einen Versuch entgegen,
eine geheime Zahl zu erraten, und überprüfen, ob diese Zahl erraten wurde.
Wir setzen die Variable zahl
auf irgendeine von uns
ausgesuchte ganze Zahl, etwa 23
. Dann nehmen wir den Rateversuch
des Benutzers mit Hilfe der Funktion raw_input()
entgegen.
Funktionen sind nichts weiter als wieder verwendbare Programmteile. Wir werden mehr
darüber im nächsten Kapitel erfahren.
Wir übergeben der eingebauten Funktion raw_input
einen String, den diese auf dem Bildschirm ausgibt, bevor sie auf eine Benutzereingabe
wartet. Sobald wir etwas eingegeben und die Enter-Taste
gedrückt haben, liefert die Funktion die Eingabe zurück, die im Fall der Funktion
raw_input
ein String ist. Wir verwandeln dann diesen String
mittels int
in eine Ganzzahl, die wir in der Variablen
geraten
abspeichern. Eigentlich ist int
eine Klasse, aber alles was Sie momentan wissen müssen, ist, dass sie hiermit
einen String in eine Ganzzahl umwandeln können (unter der Annahme, dass der
String eine gültige Ganzzahl als Text enthält).
Als Nächstes vergleichen wir die vom Benutzer geratene Zahl mit der von uns ausgewählten Zahl. Wenn sie gleich sind, geben wir eine Erfolgsmeldung aus. Beachten Sie, dass wir verschiedene Einrücktiefen benutzen, um Python klarzumachen, welche Anweisung zu welchem Block gehört. Darum sind Einrückungen in Python so wichtig und man muss auf den Leerraum am Zeilenanfang achten (im Gegensatz zu anderen Programmiersprachen, wo Blöcke üblicherweise durch irgendeine Art von Klammern oder Schlüsselworte wie BEGIN..END markiert werden). Ich hoffe, dass Sie sich an die Regel 'einen Tabulator pro Einrückungstiefe' halten, erinnern Sie sich?
Beachten Sie, dass die if
-Anweisung einen Doppelpunkt
am Ende erfordert - hiermit wird in Python grundsätzlich angezeigt, dass ein neuer
Anweisungsblock folgt.
Falls die beiden Zahlen nicht gleich waren, überprüfen wir, ob die geratene Zahl kleiner
als unsere Zahl ist, und falls dies der Fall ist, informieren wir den Benutzer, dass unsere Zahl
ein wenig höher ist. Was wir hier verwendet haben, ist eine elif
-Klausel,
mit der man zwei verschachtelte if else-if else
-Anweisungen als eine
kombinierte if-elif-else
-Anweisung schreiben kann. Dadurch wird das
Programm vereinfacht und die nötige Einrückungstiefe reduziert.
Die elif
- und else
-Anweisungen müssen
ebenfalls einen Doppelpunkt am Ende der logischen Zeile haben, gefolgt von dem jeweiligen
Anweisungsblock (natürlich mit der richtigen Einrückungstiefe).
Sie können innerhalb des if-Blocks einer if
-Anweisung
eine weitere if
-Anweisung unterbringen und so weiter -
dies nennt man eine verschachtelte if
-Anweisung.
Denken Sie daran, dass die elif
- und else
-Teile
optional sind. Eine minimale gültige if
-Anweisung ist:
if True: print 'Ja, es ist wahr.'
Nachdem Python die gesamte if
-Anweisung sowie die zugehörigen
elif
- und else
-Klauseln abgearbeitet hat,
fährt es mit der nächsten Anweisung in dem Block fort, der die if
-Anweisung
enthält. In diesem Fall ist es der Hauptblock, in dem die Programmausführung beginnt, und
die nächste Anweisung lautet print 'Fertig.'
. Danach erkennt Python
das Programmende und beendet die Programmausführung.
Dies ist zwar ein sehr kleines Programm, aber ich habe dennoch auf eine Menge Dinge hingewiesen, die Sie selbst in diesem kleinen Programm beachten sollten. All dies ist im Grunde unmittelbar einleuchtend (und für Leute mit C/C++-Hintergrund überraschend einfach) und wenn Sie sich diese Dinge einmal bewusst klar gemacht haben, werden Sie sich schnell mit ihnen anfreunden, und sie werden ihnen bald völlig 'natürlich' vorkommen.
In Python gibt es keine switch
-Anweisung. Sie können
eine if..elif..elif..else
-Anweisung benutzen, um das Gleiche
zu erreichen, und oft stattdessen auch eine Abbildung
(ein Dictionary) benutzen.