Ganz ähhnlich wie die Verzweigung mit if funktioniert die while-Schleife: Es wird etwas solange wiederholt wie ein Wert True ergibt:
Solange Bedingung wahr, wiederhole dies
Syntax
while True/False:
mache_dies()
und_das()
...
dann_hier_weiter()Wie beim if wird die Bedingungen hinter dem while ausgewertet und der eingerückte Teil nur ausgeführt, wenn diese Bedingung True ergibt. Es wird aber anschliessend erneut dieselbe Bedingung geprüft und der eingerückte Teil ev. nochmal ausgeführt. Dies wiederholt sich, bis irgendwann die Überprüfung der Bedingung False ergibt. Dann wird der Schleifen-Inhalt nicht mehr ausgeführt und dass Programm geht unterhalb der Schleife weiter.
Beispiele
Man kann mit while auch Zahlen auflisten. Zum Beispiel alle Zahlen von 0 bis und mit 9 kann man mit while oder dem bekannten for in auflisten:
i = 0
while i < 10:
print(i)
i = i + 1
print("fertig")for i in range(10):
print(x)
print("fertig")Warnung
Bei der while-Schleife muss man in der Schleife drin die Bedinung verändern! (im Beispiel i vergrössern).
Sonst kann es zu einer Endlosschleife kommen und das Programm hört nie auf.
Das folgende Beispiel überprüft die Eingabe des Benutzers: Wenn die eingegebene Zahl nicht den Anforderungen entspricht, wird eine weitere Eingabe verlangt:
x = int(input("gib eine Zahl zwischen 0 und 100 ein: "))
gueltig = x > 0 and x < 100
while not gueltig:
x = int(input("ich habe gesagt zwischen null und 100! Nochmal: "))
gueltig = x > 0 and x < 100
print("Danke,", x, "liegt zwischen 0 und 100")Aufgaben
Aufgabe: Zweierpotenzen
Liste alle Zweierpotenzen kleiner als 1’000’000 auf
Lösung: Zweierpotenzen
x = 2
while x < 1000000:
print(x)
x = 2*xAufgabe: Farbige Kreise
Erstelle eine Turtlesteuerung:
- Definiere eine Liste von gültigen Farben
- Die Turtle wartet bis der Benutzer eine Farbe eingibt
- Dann zeichnet die Turtle einen Kreis in dieser Farbe
- Anschliessend wartet die Turtle auf die nächste Farbeingabe und zeichnet einen weiteren Kreis
- Dies so lange bis der Benutzer keine gültige Farbe eingibt
Lösung: Farbige Kreise
import turtle
farben = ["red", "green", "blue"]
print(farben)
farbe = input("Gib eine Farbe ein: " + str(farben) + ": ")
while farbe in farben: # Solange die eingegebene Farbe auf der Liste steht
turtle.color(farbe)
turtle.begin_fill()
turtle.circle(100)
turtle.end_fill()
print(farben)
farbe = input("Gib eine weitere Farbe ein: ")
turtle.done()