Die while-Schleife
Stell dir vor, du sollst die Zahlen von 1 bis 100 ausgeben. Du könntest hundertmal print() schreiben, aber das würde ewig dauern, und etwas später zu ändern wäre noch schlimmer. Programme wiederholen solche Arbeit ständig: Sie gehen jeden Schüler einer Liste durch, prüfen jedes Produkt in einem Shop oder zeichnen den Bildschirm eines Spiels 60-mal pro Sekunde neu. Dafür sind Schleifen da. Eine Schleife ist ein Stück Code, das immer wieder ausgeführt wird.
Die einfachste Schleife ist while („solange“). Sie wiederholt einen Codeblock, solange ihre Bedingung wahr ist:
zahl = 1
while zahl <= 5:
print(zahl)
zahl += 1Das gibt Folgendes aus:
1
2
3
4
5Eine while-Schleife sieht aus wie ein if: das Schlüsselwort, eine Bedingung, ein Doppelpunkt und ein eingerückter Codeblock. Der Unterschied ist, dass if seinen Block höchstens einmal ausführt, while aber immer wieder zur Bedingung zurückkehrt. Schritt für Schritt:
- Das Programm erstellt
zahlmit dem Wert1. - Es prüft die Bedingung
zahl <= 5. Sie istTrue, also führt es den Block aus: Es gibt1aus, undzahl += 1erhöhtzahlauf2. - Es geht zurück zur Bedingung.
2 <= 5ist immer nochTrue, also gibt es2aus und erhöhtzahlauf3. - Und so weiter, bis
zahlgleich6ist. Dann ist die BedingungFalse, die Schleife endet, und das Programm macht mit dem Code nach der Schleife weiter.
Jeder Durchlauf des Blocks heißt Iteration. Diese Schleife hat fünf Iterationen. Um die Zahlen bis 100 auszugeben, müsstest du nur 5 in 100 ändern.
Welche Zeilen gehören zur Schleife? Genau wie bei if die eingerückten. Eine Zeile unter der Schleife, die nicht eingerückt ist, wird nur einmal ausgeführt, nachdem die Schleife fertig ist:
zahl = 1
while zahl <= 3:
print(zahl)
zahl += 1
print("Fertig")1
2
3
FertigHüte dich vor Schleifen, die nie enden. Wenn du die Zeile zahl += 1 vergisst oder nicht einrückst (sodass sie hinter der Schleife steht), bleibt zahl gleich 1, die Bedingung ist immer wahr, und die Schleife gibt für immer 1 aus. Das nennt man eine Endlosschleife. In diesen Übungen wird ein solches Programm nach 5 Sekunden mit der Meldung Das Programm lief zu lange und wurde angehalten. Enthält es eine Schleife, die nie endet? gestoppt. Wenn du sie siehst, prüfe, ob die Schleife die Variable in ihrer Bedingung ändert, sodass die Bedingung irgendwann falsch wird.
So schreibst du es:
Anweisungen
- 1
Erstelle eine Variable
zahlmit dem Wert10. Die Schleife zählt mit ihr. - 2
Schreibe darunter eine
while-Schleife, die läuft, solangezahlkleiner oder gleich20ist. Gib in der Schleifezahlaus und erhöhe sie dann um 1. Das Programm gibt die Zahlen von 10 bis 20 aus, jede in einer eigenen Zeile. - 3
Ändere jetzt eine Zahl in deinem Code, sodass die Schleife alle Zahlen von 10 bis 100 ausgibt.