A Byte of Python

Die if-Anweisung

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.

Gebrauch der if-Anweisung

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
				
				

Output

				
$ 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.
				
				

So funktioniert es

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.

Anmerkung für C/C++-Programmierer

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.