Einführung
Möchten wir eine oder mehrere Anweisungen in leicht veränderter Form wiederholt durchführen, bietet es sich oft an, eine Schleife zu verwenden. Starten wir direkt mit einem Beispiel:
n = 0 while n < 10: print(n) n = n+1
Hier wird zunächst der Variablen n
der Wert Null zugewiesen. Die Schleife wird mit dem Schlüsselwort while
eingeleitet. Ähnlich wie bei if
folgt in den runden Klammern eine Bedingung. Diese wird zu Beginn geprüft. Ist sie erfüllt, werden die Anweisungen im folgenden Block ausgeführt, andernfalls werden sie übersprungen. Im Unterschied zu einer Verzweigung mit if
wird die Bedingung nach Ausführung der Anweisungen erneut geprüft und gegebenenfalls werden die Anweisungen erneut ausgeführt. Dies geschieht so lange die Bedingung noch erfüllt ist.
In unserem konkreten Beispiel werden also die Zahlen von 1 bis 9 ausgegeben. Erreicht n
den Wert 10 ist die Bedingung nicht mehr erfüllt, so dass die Anweisungen nicht mehr ausgeführt werden und die Schleife beendet wird.
Sehen wir uns noch ein Beispiel an:
n = 0 ergebnis = 0 while n <= 10: ergebnis = ergebnis+n n = n+1 print(ergebnis)
Hier werden zunächst zwei Variablen n
und ergebnis
auf 0 gesetzt. Solange die Variable n
kleiner oder gleich 10 ist, wird dann zunächst ihr Wert auf den von ergebnis
addiert und danach wird n
selbst um eins erhöht. Dies führt dazu, dass in ergebnis
die Summe 1+2+…+10 gespeichert wird.
continue
Mit der Anweisung continue
bewirkt man, dass der aktuelle Schleifendurchlauf unterbrochen wird und wieder zur Überprüfung der Bedingung gesprungen wird. Meist liegt so eine Anweisung in Verbindung mit einer if
-Abfrage vor:
n = 0 while n < 10: n = n+1 if n%2==0: continue print(n)
Dies ist eine Abwandlung unseres ersten Beispiels von oben. Immer wenn die Variable n
gerade ist (also ohne Rest durch 0 teilbar) wird bevor es zur Ausgabe kommt der aktuelle Durchlauf unterbrochen und mit dem nächsten fortgefahren. Dies führt dazu, dass nur die ungeraden Zahlen ausgegeben werden.
break
Mit break
kann man eine Schleife komplett beenden. Um hier eine sinnvolle Anwendung zu sehen, müssen wir ein etwas aufwändigeres Beispiel wählen:
summe = 0 while(summe < 100): n = int( input('Zahl ungleich 0 zum Addieren oder 0 zum Stoppen! ' ) ) if (n==0): break summe = summe+n print(summe)
Solange die Variable summe
einen Wert kleiner als 100 hat, wird eine Zahl n
eingelesen. Ist diese ungleich 0, wird sie auf summe
addiert. Ist n
jedoch 0 wird die Schleife mit break
beendet und die berechnete Summe wird ausgegeben.
else
Es mag etwas überraschen, dass auch bei while
-Schleifen ein else
hinzugefügt werden kann. Erweitern wir dazu das letzte Beispiel:
summe = 0 while(summe < 100): n = int( input('Zahl ungleich 0 zum Addieren oder 0 zum Stoppen! ' ) ) if (n==0): break summe = summe+n else: print('Obergrenze erreicht!') print(summe)
Die Anweisungen im else
-Teil werden immer dann ausgeführt, wenn die Schleife auf dem normalen Weg, also nicht durch break
, beendet wird. Wird hier also der Wert von 100 erreicht erscheint die Meldung Obergrenze erreicht
und die Summe wird ausgegeben. Wird die Schleife jedoch beendet, weil eine 0 eingegeben wurde, erscheint diese Meldung nicht.
Zur Verdeutlichung sehen wir uns zwei Abläufe an:
Zahl ungleich 0 zum Addieren oder 0 zum Stoppen! 9 Zahl ungleich 0 zum Addieren oder 0 zum Stoppen! 9 Zahl ungleich 0 zum Addieren oder 0 zum Stoppen! 0 18
Zahl ungleich 0 zum Addieren oder 0 zum Stoppen! 77 Zahl ungleich 0 zum Addieren oder 0 zum Stoppen! 10 Zahl ungleich 0 zum Addieren oder 0 zum Stoppen! 20 Obergrenze erreicht! 107