Wiederholen, solange die Frage mit "Ja" beantwortet wird
Eine Wiederholung mit einer Frage führt einen Codeblock so lange aus, bis die Frage nicht mehr mit "Ja" beantwortet wird.
Im folgenden Beispiel wird solange eine Spirale gezeichnet, bis die Distanz der Turtle vom Zentrum mehr als 200px
beträgt.
Diese Art von Wiederholung kann dazu führen, dass eine Frage immer mit "Ja" beantwortet wird und das Programm also nie endet.
Oft ist dies nicht gewollt, doch einmal gestartet, ist es dann in der Browser-Version von Python schwierig, das Programm zu stoppen und die ganze Seite reagiert nicht mehr. Um das Programm zu Dies gelingt: Oft ist dies nicht gewollt, doch einmal gestartet, ist es dann in der Browser-Version von Python schwierig, das Programm zu stoppen und die ganze Seite reagiert nicht mehr. Um das laufende Programm zu stoppen, muss:
der ganze Tab geschlossen und die Seite in einem neuen Tab geöffnet werden. (Tipp: Die URL zuerst kopieren...)
(den ganzen Browser über den Taskmanager schliessen)
from turtle import *
winkel = 20
while distance(0, 0) < 200:
forward(5)
left(winkel)
winkel = winkel * 0.99
Oft könnte man dies auch mit einer for-Schleife erreichen. Jedoch müsste man dann zuerst berechnen, wie viele Schritte nötig sind, bis dies der Fall ist. Im obigen Beispiel kann etwa der Schrumpf-Faktor (0.99
) verändern, ohne die Frage (weniger als 200px
Abstand zum Zentrum?) zu ändern.
Probieren Sie es aus und spielen Sie mit dem Schrumpf-Faktor 0.99
im obigen Bispiel.
from turtle import *
winkel = 20
while distance(0, 0) < 200:
forward(5)
left(winkel)
winkel = winkel * 0.99
Wann gibt es mehr/weniger Windungen?
Wann entsteht eine unendliche Schleife?
Wiederholungen mit der while
-Schleife
Mit der while
-Schleife können alle Wiederholungen, die mit der for i in range(...):
Syntax erzeugt wurden, ebenfalls erzeugt werden. Dabei muss aber jeweils eine Variable, z.B. i
, verwendet werden, welche sich die Anzahl Wiederholungen merkt. Natürlich muss diese Variable dann bei jeder Wiederholung um eins hochgezählt werden. Eine solche Variable, die bei jeder Wiederholung erhöht wird, wird Schleifenzähler oder Laufvariable genannt.
from turtle import *
i = 0
while i < 4:
forward(100)
left(90)
i = i + 1
for
zu while
Schreiben Sie das untenstehende Programm so um, dass nur noch while
Schleifen verwendet werden.
from turtle import *
forward(30)
left(60)
for i in range(5):
forward(100)
left(72)
backward(20)
from turtle import *
while
zu for
Schreiben Sie das untenstehende Programm so um, dass nur noch for
Schleifen verwendet werden.
from turtle import *
speed(10)
def move(x, y):
penup()
goto(x, y)
pendown()
def quadrat():
i = 0
while i < 4:
forward(20)
left(90)
i = i + 1
zeile = 0
while zeile < 5:
spalte = 0
while spalte < 3:
move(zeile * 20, spalte * 20)
quadrat()
spalte = spalte + 1
zeile = zeile + 1
from turtle import *
Anwendung
Die while
-Schleife kommt oft bei Benutzerinteraktionen, Simulationen oder bei sich dynamisch ändernden Daten vor. Sonstige Wiederholungen lassen sich normalerweise einfacher mit einer for
-Schleife umsetzen.
Ändern Sie das Ratespiel aus dem Kapitel Verzweigungen so ab, dass die Spieler:in unendlich viele Versuche hat um die Zahl zu finden.
Wurde die gesuchte Zahl gefunden, soll die Anzahl Versuche zurückgemeldet werden.
9. ⭐️ While