Schleifen

Inhalt dieser Seite

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