Zum Hauptinhalt springen

Schleifen

Die for-Schleife

Fixe Anzahl Wiederholungen

Wir verwenden die for-Schleife immer dann, wenn wir einen bestimmten Code-Block eine fixe Anzahl Mal wiederholen wollen.

Hier sehen Sie ein Beispiel einer for-Schleife:

from turtle import *

for i in range(4):
forward(100)
right(90)

done()

Die Zeile for i in range(4) bedeutet, dass die Instruktionen auf den Zeilen 4 und 5 4x wiederholt werden sollen.

Der Ausdruck range(4) erzeugt eine 👉 Liste mit den vier ganzzahligen Elementen von 0 bis 3, also [0, 1, 2, 3]. Folgendes Programm wäre also gleichwertig:

from turtle import *

for i in [0, 1, 2, 3]:
forward(100)
right(90)

done()

Die range(4)-Schreibweise ist aber einerseits kürzer zum Schreiben. Andererseits könnte man den Wert 4 in den Klammern auch mit einer 👉 Variable ersetzen. So könnten wir das Turtle-Quadrat beispielsweise zu einem generischen n-Eck verwandeln:

from turtle import *

seiten = 5

for i in range(seiten):
forward(100)
right(360 / seiten)

done()

Das i in for i in range(4) ist übrigens auch eine Variable. Wir können einerseits einen beliebigen anderen Variablennamen verwenden und andererseits diesen Wert innerhalb der Schleife verwenden:

from turtle import *

for schrittlaenge in range(100):
forward(schrittlaenge)
right(20)

done()

Wenn wir auf Zeile 4 die Variable schrittlaenge verwenden, dann verhält sie sich beim ersten Schleifendurchlauf wie die Zahl 0 (also forward(0)), beim zweiten Durchlauf wie eine 1 (also forward(1)), und beim 100-sten und letzten Durchlauf wie eine 99 (also forward(99)).

Zahlen-Range

Bei einer Schleife definiert durch for i in range(10) nimmt i der Reihe nach die Werte 0 bis 9 an.

Die while-Schleife

Bedingung

Wir verwenden die while-Schleife immer dann, wenn wir einen bestimmten Code-Block so lange wiederholen wollen, wie eine gewisse Bedingung erfüllt ist.

Hier sehen Sie ein Beispiel einer while-Schleife:

from random import randint

zufallszahl = randint(1, 6)
while zufallszahl < 6:
print("Noch keine 6 gewürfelt!")
zufallszahl = randint(1, 6)

print("6 gewürfelt - fertig!")

Hier wird so lange eine 👉 Zufallszahl erzeugt, wie noch keine 6 "gewürfelt" wurde. Diese Bedingung wird auf Zeile 4 überprüft. So lange werden die Instruktionen auf den Zeilen 5 und 6 wiederholt. Zum Zeitpunkt der Entwicklung dieses Programms wissen wir also nicht, wie oft die Instruktionen wiederholt werden müssen. Deshalb verwenden wir hier eine while- statt eine for-Schleife.

Mit der while-Schleife kann man auch eine for-Schleife "nachbauen":

from turtle import *

zaehler = 0
while zaehler < 4:
forward(100)
right(90)
zaehler = zaehler + 1

done()
Endlosschleife

Im Gegensatz zur for-Schleife können wir bei der while-Schleife eine Endlosschleife erzeugen. Das Programm wird in solchen Fällen nie enden (oder in gewissen Fällen den Computer zum Abstürzen bringen).

Wichtig ist dabei, dass wir auf der Zeile 7 den zaehler erhöhen. Ansonsten erhalten wir eine Endlosschleife:

from turtle import *

zaehler = 0
while zaehler < 4:
forward(100)
right(90)
zaehler = zaehler + 1

done()

Dieses Programm wird nie enden.