Mehr Möglichkeiten für »while«-Schleifen
Der Normalfall für while-Schleifen, von dem wir hier ausgegangen sind, ist also der, dass eine while-Schleife immer so lange läuft, wie die Bedingung zutrifft, die hinter while steht.
Endlosschleifen mit »while«
Man kann mit while auch Endlosschleifen produzieren. Also Schleifen, die ewig weiterlaufen. Zum Beispiel so:
while True:
Befehl
Befehl
usw. …
Die Bedingung bei while True: ist immer erfüllt, denn True ist und bleibt immer wahr. Dadurch würde die while-Schleife niemals beendet, und man könnte das Programm nur von außen beenden, indem man die Programmausführung abbricht. Eine while-True-Schleife hat in TigerJython somit denselben Effekt wie eine repeat-Schleife ohne Zählerwert.
Schleife verlassen mit »break«
Es gibt aber doch eine Möglichkeit, aus einer while-Schleife wieder herauszukommen, auch wenn die obere Bedingung wahr ist. Das macht man mit dem Kommando break.
Zum Beispiel in diesem Programm:
while True:
x = input("Gib eine Zahl ein, oder 0 für Ende.")
if x == 0:
break
print "Das Doppelte deiner Zahl ist:",x*2
Mit dem Befehl break wird die while-Schleife komplett verlassen, ohne dass die Bedingung noch einmal geprüft wird. Dadurch kann man auch Endlosschleifen wieder verlassen. Und man verhindert hier, dass für die 0 ein Wert berechnet und ausgegeben wird. Falls die eingegebene Zahl 0 ist, bricht die while-Schleife ab und ist beendet. Wenn nicht, dann wird sie ganz normal fortgesetzt und die Berechnung gemacht, dann wieder nach oben gesprungen.
Schleife vorzeitig fortsetzen mit »continue«
Während man mit break aus einer Schleife vorzeitig aussteigen kann, kann man mit dem Befehl continue vorzeitig wieder nach oben zur Abfrage der Bedingung springen, ohne den Rest der Schleifenbefehle abzuarbeiten.
x = 0
while x < 21:
x += 1
if x == 13:
continue
print x
Schau dir dieses Programm an: Es zählt von 1 bis 20. Aber die Zahl 13 wird ausgelassen (also ein Zähler für Abergläubische). Warum wird die Zahl 13 ausgelassen? Weil für den Fall, dass die Zahl 13 ist, der continue-Befehl ausgeführt wird – damit geht es wieder nach oben in die while-Zeile, bevor die Zahl ausgegeben wird. Sicher – dieses Beispiel könnte man auch anders programmieren. Aber es zeigt, wie der continue-Befehl funktioniert.