Schleifen
Die for
-Schleife
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)
).
Bei einer Schleife definiert durch for i in range(10)
nimmt i
der Reihe nach die Werte 0
bis 9
an.
Die while
-Schleife
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()
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.