Der Python-Kurs: while-Schleife
Willemers Informatik-Ecke
Abfrage if Python-Kurs Strings

Inhalt dieser Seite Die Schleife mit dem Befehl while wird so lange durchlaufen, wie die Bedingung der Schleife erfüllt ist. Als Bedingung benötigen Sie also einen boolesche Ausdruck, wie er bei den Bedingungen schon verwendet wird.

Zählen im Programm

Eine der einfachsten Wiederholungen ist das Zählen. Man addiert auf eine Variable immer wieder den Wert 1 hinzu, solange diese unter dem Endwert liegt. Wir lassen Python bis 10 zählen.
i = 0
while i<10:
    i = i + 1
    print(i)
Am Anfang der Schleife wird die Schleifenbedingung geprüft. Ist diese erfüllt, werden die eingerückten Befehle durchlaufen und dann wieder an den Schleifenkopf gesprungen.

Im Beispiel ist die Variable i zunächst 0. Das ist kleiner als 10, also werden die eingerückten Befehle ausgeführt. Zunächst wird der bisherige Wert von i mit 1 addiert und das Ergebnis wieder i zugewiesen. Dadurch ist der Inhalt von i nun 1. Dieser Wert wird über die Funktion print() ausgegeben. Der Weg führt wieder zum Schleifenkopf. Da 1 immer noch kleiner als 10 ist, wiederholen sich die eingerückten Zeilen.

Irgendwann ist die Variable i endlich 10 und damit nicht mehr kleiner als 10. Die Schleife wird verlassen. Und da nichts weiter folgt, auch das Programm.

Beispiel Eingabeprüfung

Andere Anwendungen einer Schleife sind die Wiederholung der Eingabe, bis sie den Programmanforderungen genügen. Die folgende Schleife wiederholt sich, bis die Eingabe ein Zahlenwert ist, der zur Anforderung des Programms passt.

Eine unterhaltsamere Variante ist das Spiel zum Raten von Zahlen. Der Computer denkt sich eine Zahl zwischen 1 und 100 und Sie müssen raten, welche es ist.

#!/usr/bin/python
zahl = 42
eingabe = -1
while eingabe!=zahl:
    eingabe = input()
    if eingabe<zahl:
        print("zu klein")
    elif eingabe>zahl:
        print("zu gross")
    else:
        print("gewonnen")

Problem Endlosschleife

Jeder Programmierer hat es schon einmal erlebt, dass ein Programm niemals endete. Es befand sich dann in einer Schleife, die nie endet. Dies gilt es zu vermeiden. Anfängern fällt das manchmal schwer.

Damit das nicht passiert, sollte der Blick immer auf die Bedingung der Schleife gerichtet werden. Nur wenn diese Bedingung irgendwann fehlschlägt, kann die Schleife enden. Die Vorraussetzung für eine Änderung muss immer im Schleifenkörper erfolgen. Betrachten wir das Beispiel von vorhin:

while eingabe!=zahl:
An der Bedingung sind die Variablen eingabe und zahl beteiligt. Mindestens eine von beiden Variablen muss sich im Schleifenblock verändern. Im Beispiel ist dies die Variable eingabe, die vom Benutzer eingegeben wird. Die Variable zahl ändert sich nicht.

Brutales Verlassen einer Schleife mit break

Sie können eine Schleife sofort verlassen, indem Sie den Befehl break verwenden. Das muss natürlich unter einer Bedingung erfolgen.

Man darf allerdings die Frage stellen, warum die Bedingung nicht in die Schleifenbedingung integriert wird, wo sie hingehört. Denn da wird man die Bedingung suchen.

break gehört zu den Befehlen, die man besser nicht kennen sollte.

Wildes Herumspringen in der Schleife mit continue

Falls Sie innerhalb der Schleife feststellen, dass Sie nun eigentlich den Rest nicht mehr ausführen müssen, sondern die nächste Runde der Schleife antreten wollen, könnten Sie dies mit dem Befehl continue erreichen.

Es ist allerdings nicht begreiflich, warum Sie sich diese Unübersichtlichkeit antun, wenn Sie es viel sauberer mit einer if-Anweisung erreicht hätten.

continue gehört zu den Befehlen, die man besser nicht kennen sollte.

Übungsaufgaben

Ratespiel

Schreiben Sie Ihr erstes Spiel. Der Benutzer soll eine Zahl raten, die sich der Computer mithilfe des Zufallszahlengenerators ausgedacht hat. Um einen Highscore bilden zu können, zählt das Programm die Versuche des Anwenders mit und gibt sie aus.

ZIffernzahl berechnen

Bestimmen Sie in einem Programm die Anzahl der Stellen (Ziffern) einer ganzen Zahl, die sich in einer Variablen n befindet. Zur Ermittlung verwenden Sie aber bitte nur die Grundrechenarten!

Beispiel: Die Zahl 124874 hat 6 Stellen, die Zahl 13 nur 2.

Der größte gemeinsame Teiler ggT

Der größte gemeinsame Teiler zweier Zahlen ist die größtmögliche Zahl, durch die sich beide Zahlen ohne Rest teilen lässt. Der alte Euklid (Er war nicht Professor an der Hochschule Flensburg) hatte ein schickes Verfahren:

Der ggT zweier Zahlen a und b ist auch der ggT der Differenz von a und b und einer der beiden Zahlen. Beispiel:

Wenn die Differenz 0 ist, war der letzte Wert der ggT all dieser Zahlen, hier also 4.

Schreiben Sie eine Schleife, die auf diese Weise den ggT zweier Zahlen errechnet. Achten Sie darauf, dass Sie eventuell ein while mit einem if schachteln müssen.

Fuchsjagd

Diese Aufgabe wurde vom Kultusministerium als Mathematikwettbewerb der 4. Klassen ausgeschrieben. Kinder in diesem Alter werden die Aufgabe iterativ lösen, da sie nur mäßige Kenntnisse der Linearen Algebra besitzen. Als Informatiker können Sie diesen Ansatz nutzen und die Aufgabe über eine Schleife lösen.

Ein Hund hetzt einen Fuchs. In der Zeit, in der der Fuchs neun Sprünge macht, springt der Hund sechs Mal. Aber die Sprünge des Hundes sind länger. Mit nur drei Sprüngen legt der Hund den gleichen Weg zurück wie der Fuchs mit sieben Sprüngen. Der Fuchs hat einen Vorsprung von 60 Fuchssprüngen. Nach wie vielen seiner Sprünge holt ihn der Hund ein?


Der Kurs geht weiter mit Strings.