Skip to content

While-Schleife

Programmieren

Ganz ähhnlich wie die Verzweigung mit if funktioniert die while-Schleife: Es wird etwas solange wiederholt wie ein Wert True ergibt:

Wenn-Dann

Solange Bedingung wahr, wiederhole dies

Syntax

python
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:

python
i = 0
while i < 10:
    print(i)
    i = i + 1

print("fertig")
python
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:

python
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
python
x = 2

while x < 1000000:
    print(x)
    x = 2*x

Aufgabe: 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
python
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()

Gymnasium Kirchenfeld, fts