Schleifen

Bei einer bedingten Wiederholung wird eine Anweisung oder Anweisungsfolge so lange wiederholt, wie eine Bedingung erfüllt ist. Typische Beispiele aus dem Alltag sind:

  • Solange du durstig bist, trink.
  • Solange das Auto langsamer als 50 km/h ist, gib Gas.
  • Solange noch Geschirr schmutzig ist, spüle

Eine bedingte Wiederholung kann man sich als Schleife vorstellen, die mehrmals (eventuell auch gar nicht) durchlaufen wird. Die Anweisungen, die wiederholt werden, nennt man auch das Innere der Schleife oder das Schleifeninnere.

While Schleife

While bedeutet auf deutsch „solange wie“. Eine Schleife wird wiederholt solange die Bedingung wahr ist.
In diesem Beispiel iteriert die Variable i innerhalb der Schleife von 1 bis 20. Eine solche Variable, deren Wert sich mit jeder neuen Schleifeniteration ändert, wird Zähler genannt. Beachten Sie, dass nach dem Ausführen dieses Fragments der Wert der Variablen i definiert ist und gleich 21 , denn wenn i == 21 die Bedingung i <= 20 zum ersten Mal Falsch.

#!/usr/bin/python 
i=0
while i < 20:
i=i+1
print (i)

Andere Anwendungen einer Schleife sind die Wiederholung der Eingabe, bis sie den Programmanforderungen genügen. Damit eine while-Schleife beginnt, muss man vorher dafür sorgen, dass die abgefragte Bedingung beim ersten Durchlauf zutrifft. Meist muss man dafür die mit while abgefragte Variable auf einen passenden Anfangswert setzen.

For-Schleife

Wie auch die while-Schleife ist die for-Schleife eine Kontrollstruktur, mit der eine Gruppe von Anweisungen (ein Block) wiederholt ausführt werden kann. Die For-Schleife ist vor Allem für Listen.

Eine Iteration über die Elemente einer Sequenz wird in Python durch eine for -Anweisung bewerkstelligt. Sie hat in einfachen Fällen folgendes Format:

for element in kollektion:
anweisungsblock

Dabei ist element ein Name für das aktuelle Element der Iterationskollektion, also das Objekt, bei dem man sich auf dem »Marsch« durch die Kollektion gerade befindet. Der Anweisungsblock, der dem Doppelpunkt folgt und der wiederholt ausgeführt werden soll, muss eingerückt sein.

for Tagesablauf in "Arbeiten","Erschöpft sein", "Ins Bett gehen","Erholen":
print (Tagesablauf)

Arbeiten
Erschöpft sein
Ins Bett gehen
Erholen

Hilfreich für die Formulierung vieler Iterationen ist die range() -Funktion. Der Aufruf range(n) erzeugt ein spezielles range -Objekt, das eine Folge ganzer Zahlen von 0 bis n-1 repräsentiert. Mittels range(n) können n Wiederholungen einer Anweisung definiert werden:

for i in range(3):
       print("Hurra!")
Hurra!
Hurra!
Hurra!
      
#!/usr/bin/python 
for i in range(1, 5): 
    print i 
else: 
    print 'Die for-Schleife ist zu Ende.'

Beachten Sie, dass der else-Teil optional ist. Wenn er hinzugefügt wird, wird er immer einmal nach dem Ende der for-Schleife ausgeführt, außer wenn die Schleife durch eine break-Anweisung abgebrochen wird.

Schleifenanweisungen können eine else-Klausel haben. Sie wird ausgeführt, wenn die Schleife durch die Erschöpfung der Liste (mit for) beendet wird oder wenn die Bedingung falsch wird (mit while), jedoch nicht, wenn die Schleife durch eine break-Anweisung beendet wird. Dies wird durch die folgende Schleife veranschaulicht, die nach Primzahlen sucht:

Ruft man die Funktion range(start, stop, step) mit drei Argumenten auf, so gibt das letzte Argument die Differenz zwischen einer Zahl und der folgenden Zahl der erzeugten Liste an (Schrittweite). Die folgende Zählschleife gibt gerade Zahlen aus:

for i in range(-6,6,2): 
print (i, end=" ")
-6 -4 -2 0 2 4

Ein weiteres Beispiel:

Die Pass-Anweisung macht nichts. Sie kann verwendet werden, wenn eine Anweisung syntaktisch erforderlich ist, das Programm jedoch keine Aktion erfordert. Zum Beispiel:

>>> while True: 
... pass # Warten auf Tastaturinterrupt (Ctrl+C) ...

Vergleich zwischen if und der while-Schleife:
Beim if-Befehl wird der eingerückte Block einmalig ausgeführt, wenn die Bedingung wahr ist. Bei der while-Schleife wird der eingerückte Block ausgeführt, wenn die Bedingung wahr ist, und springt danach wieder zum Anfang und prüft ob die Bedingung erneut. Solange die Bedingung wahr ist, wird der Block immer wieder ausgeführt.