7.2 Schleifen mit Bedingung (while)#
Ein typisches Beispiel aus dem Alltag, bei dem wir etwas wiederholen, solange eine Bedingung erfüllt ist, ist das Kochen von Wasser. Moderne Wasserkocher haben einen eingebauten Temperatursensor, der die Temperatur des Wassers misst. Solange die Wassertemperatur kleiner als 100 ˚C ist, wird das Wasser erhitzt. Sobald die 100 ˚C erreicht sind, wird der Wasserkocher abgeschaltet. Solche Wiederholungen wollen wir nun mit Python umsetzen.
Lernziele#
Lernziele
Sie können eine Schleife mit Bedingung als while-Schleife in Python implementieren.
Sie können mit break eine Schleife vorzeitig abbrechen.
Sie können mit continue eine Schleife vorzeitig fortsetzen.
Syntax der while-Schleife#
Bei einer Wiederholung mit Bedingung werden eine oder mehrere Anweisungen solange wiederholt, wie die Bedingung erfüllt ist. Die sogenannte while-Schleife hat folgende Struktur:
while Bedingung:
anweisungsblock
Die bedingte Wiederholung wird mit dem Schlüsselwort while
eingeleitet. Dann
folgt die Bedingung, die mit einem :
abgeschlossen wird. Alle Anweisungen, die
wiederholt werden sollen, werden eingerückt. Diesen Teil nennt man das
Schleifeninnere, die Zeile while Bedingung:
nennt man den Schleifenkopf.
Warning
While-Schleifen sind ein mächtiges Werkzeug in Python, aber es ist wichtig, sie sorgfältig zu verwenden. Eine schlecht definierte Bedingung könnte dazu führen, dass die Schleife unendlich läuft, was zu Problemen führen kann.
Um auf das Beispiel mit dem Wasserkocher zurückzukommen … auch wenn wir jetzt keinen echten Temperatursensor haben, würde eine while-Schleife
temperatur = 20
while temperatur <= 100:
print(f'aktuelle Wassertemperatur: {temperatur} ˚C')
temperatur += 10
print('Befehl an Wasserkocher: schalte das Heizelement aus!')
print('Das Wasser ist fertig gekocht!')
aktuelle Wassertemperatur: 20 ˚C
aktuelle Wassertemperatur: 30 ˚C
aktuelle Wassertemperatur: 40 ˚C
aktuelle Wassertemperatur: 50 ˚C
aktuelle Wassertemperatur: 60 ˚C
aktuelle Wassertemperatur: 70 ˚C
aktuelle Wassertemperatur: 80 ˚C
aktuelle Wassertemperatur: 90 ˚C
aktuelle Wassertemperatur: 100 ˚C
Befehl an Wasserkocher: schalte das Heizelement aus!
Das Wasser ist fertig gekocht!
Mini-Übung
Schreiben Sie ein Programm, das einen Countdown von 10 nach 0 implementiert.
# Hier Ihr Code
Lösung
zaehler = 10
while zaehler >= 0:
print(zaehler)
zaehler = zaehler - 1
Schleifen abbrechen mit break#
Die break
-Anweisung kann verwendet werden, um die Schleife vorzeitig zu
beenden, auch wenn die Bedingung der while
-Schleife noch True
ist. Hier ist
ein Beispiel:
zaehler = 0
while zaehler < 5:
if zaehler == 3:
break
print(f'Der Zaehler hat aktuell den Wert: {zaehler}.')
zaehler = zaehler + 1
Der Zaehler hat aktuell den Wert: 0.
Der Zaehler hat aktuell den Wert: 1.
Der Zaehler hat aktuell den Wert: 2.
Mini-Übung
Schreiben Sie ein Programm, das vom Benutzer natürliche Zahlen abfragt und diese quadriert und ausgibt. Wird eine 0 eingegeben, soll die Eingabe der Zahlen abgebrochen werden und die Meldung “Sie haben 0 eingegeben, das Programm wird beendet.” ausgegeben werden.
# Hier Ihr Code
Lösung
while True:
zahl = int(input('Geben Sie eine natürliche Zahl ein (0 zum Beenden): '))
if zahl == 0:
print('Sie haben 0 eingegeben, das Programm wird beendet.')
break
quadratzahl = zahl**2
print(f'Das Quadrat von {zahl} ist {quadratzahl}.')
Schleifen vorzeitig fortsetzen mit continue#
Die continue
-Anweisung wird verwendet, um den aktuellen Durchgang der Schleife
zu beenden und sofort mit dem nächsten Schleifendurchgang zu beginnen. Hier ist
ein Beispiel:
zaehler = 0
while zaehler < 5:
zaehler = zaehler + 1
if zaehler == 3:
continue
print(f'Der Zaehler hat aktuell den Wert: {zaehler}.')
Der Zaehler hat aktuell den Wert: 1.
Der Zaehler hat aktuell den Wert: 2.
Der Zaehler hat aktuell den Wert: 4.
Der Zaehler hat aktuell den Wert: 5.
In diesem Beispiel wird “Der Zaehler hat aktuell den Wert: 3” nicht ausgegeben,
da die continue
-Anweisung dafür sorgt, dass vorzeitig der nächste
Schleifendurchgang begonnen wird, sobald zaehler
den Wert 3
erreicht.
Mini-Übung
Schreiben Sie ein Programm, dass eine Zahl abfragt und deren Wurzel berechnet und ausgibt. Wird eine negative Zahl eingegeben, so soll die Wurzelberechnung übersprungen werden. Insgesamt soll das Programm solange laufen, bis drei Wurzeln berechnet wurden.
# Hier Ihr Code
Lösung
zaehler = 0
while zaehler < 3:
zahl = int(input('Geben Sie eine positive Zahl ein: '))
if zahl < 0:
print('Sie haben eine negative Zahl eingegeben, davon kann keine Wurzel berechnet werden.')
continue
wurzel = zahl**0.5
print(f'Die Wurzel von {zahl} ist {wurzel}.')
zaehler += 1