A Byte of Python

Die while-Anweisung

Die while-Anweisung ermöglicht es Ihnen, einen Anweisungsblock wiederholt auszuführen, solange eine zugehörige Bedingung erfüllt ist. Eine while-Anweisung ist ein Beispiel für eine so genannte Schleifen-Anweisung. Die while-Anweisung kann eine optionale else-Klausel haben.

Gebrauch der while-Anweisung

Beispiel 6.2. Gebrauch der while-Anweisung (while.py)

				
#!/usr/bin/python

zahl = 23
weiter = True

while weiter:
	geraten = int(raw_input('Geben Sie eine ganze Zahl ein: '))

	if zahl == geraten:
		print 'Glueckwunsch, Sie haben es erraten.'
		weiter = False # das fuehrt zum Ende der while-Schleife
	elif geraten < zahl:
		print 'Nein, die Zahl ist etwas hoeher.'
	else:
		print 'Nein, die Zahl ist etwas niedriger.'
else:
	print 'Die while-Schleife wurde beendet.'
	# Hier koennte man noch weitere Dinge tun.

print 'Fertig.'
				
				

Ausgabe

				
$ python while.py
Geben Sie eine ganze Zahl ein: 50
Nein, die Zahl ist etwas niedriger.
Geben Sie eine ganze Zahl ein: 22
Nein, die Zahl ist etwas hoeher.
Geben Sie eine ganze Zahl ein: 23
Glueckwunsch, Sie haben es erraten.
Die while-Schleife wurde beendet.
Fertig.
				
				

So funktioniert es

In diesem Programm spielen wir immer noch das Ratespiel, aber mit der Verbesserung, dass der Benutzer nun so lange weiter raten kann, bis er richtig geraten hat - man muss das Programm nicht mehr für jeden Rateversuch neu starten, wie wir es zuvor getan haben. Hier zeigt sich sehr gut der Nutzen einer while-Anweisung.

Wir verschieben die raw_input- und if-Anweisung in die while-Schleife und setzen die Variable weiter vor dem Betreten der while-Schleife auf True (logisch wahr). In der Schleife wird zuerst geprüft, ob die Variable weiter immer noch als logischer Wert wahr ist, und wenn dies der Fall ist, dann wird der zugehörige while-Block ausgeführt. Nachdem dieser Block ausgeführt wurde, wird die Bedingung erneut geprüft, die in diesem Fall aus der Variablen weiter besteht. Wenn Sie weiterhin logisch wahr ist, dann wird der while-Block wieder ausgeführt, ansonsten wird der optionale else-Block ausgeführt und danach die nächste Anweisung.

Der else-Block wird ausgeführt, wenn die while-Bedingung als logischer Wert falsch (False) wird - dies kann sogar bereits beim ersten Mal passieren, wenn die Bedingung überprüft wird. Wenn eine while-Schleife eine else-Klausel hat, dann wird diese stets ausgeführt, es sei denn, dass die Schleife eine break-Anweisung besitzt (darauf kommen wir in diesem Kapitel noch zu sprechen) oder dass die while-Schleife endlos läuft, ohne jemals abzubrechen.

Die Werte True und False werden Wahrheitswerte genannt. Es handelt sich um den so genannten logischen oder booleschen Datentyp, und Sie können sich diese Werte als gleichbedeutend mit den Werten 1 bzw. 0 denken, und in dem Programm auch 1 statt True bzw. 0 statt False schreiben, aber dann würde nicht ganz deutlich, dass die Variable weiter eigentlich einen Wahrheitswert repräsentiert, und nicht eine Zahl.

Solange keine break-Anweisung im Spiel ist, ist der else-Block eigentlich überflüssig, denn man kann in dem Fall die darin befindlichen Anweisungen einfach im gleichen Block, in dem sich die while-Anweisung befindet, hinter die while-Schleife schreiben um das gleiche Ergebnis zu erzielen.

Anmerkung für C/C++-Programmierer

Denken Sie daran, dass man unter Python bei einer while-Schleife auch eine else-Klausel zur Verfügung hat.