Zum Inhalt springen
DG-RA / Pixabay

while-Schleifen

Einführung

while-Schleifen sind anders als for-Schleifen nicht von Anfang an terminiert, das heißt die Anzahl der Durchläufe ist nicht per se vorgegeben. Stattdessen läuft die Schleife solange, bis eine bestimmte Bedingung erfüllt ist.

Schauen wir uns ein Beispiel an:

status = "" #Startwert, damit die erste Prüfung fehlerfrei stattfinden kann

while status != "stop": #Bedingung, hier: Ist status ungleich “stop”? Falls ja, weiter!
    status = input("Ich frage dich solange, bis du 'stop' eingibst.") #neuer Wert für status per input()
print("Programm beendet!") #diese Ausgabe kommt nach der while-Schleife

Beachte bitte folgende Eigenschaften bzw. Kriterien:

  • Die erste Prüfung der Bedingung muss erfolgen können. Deshalb ist in diesem Beispiel status erst ein mal mit einem leeren String übergeben. So kann in der while-Schleife geprüft werden, ob status den Wert hat, der zum Abbruch der Schleife führen soll. Du würdest sofort eine Fehlermeldung erhalten, weil status nicht definiert wäre.
  • Der Block in der while-Schleife wird so lange durchlaufen, bis die Bedingung erfüllt ist. Da muss aber nicht immer ein != als Operator eingesetzt werden. Auch andere Operatoren sind zulässig, wichtig ist nur, dass die Abfrage insgesamt True oder False zurückgibt.
    • Wenn status einen Wert ungleich “stop” hat, dann ist der Wert der Bedingung status != “stop” also True, weil die Bedingung fragt “Ist der Wert ungleich stop?” – “Ja (= True), ist er!”.
    • Wenn status einen Wert gleich “stop” hat, dann ist der Wert der Bedingung status != “stop” also False, weil die Bedingung fragt “Ist der Wert ungleich stop?” – “Nein (= False), ist er nicht!”.

Wann sollte man while-Schleifen nutzen?

while-Schleifen eignen sich bestens dafür, Fallunterscheidungen in einem Zug zu prüfen, auch hier schauen wir uns ein Beispiel an. Aus den Übungen zu if-else-Bedingungen kennen wir diesen Code:

print('Willkommen zu meinem Ratespiel! Ich werde erraten, woran du denkst! Denke an ein Auto, einen Bär oder einen Menschen! Gib bitte immer ein ja oder nein als Antwort ein!\n')

aw = input('Ist es lebendig?\n')

if aw == 'nein':
    print('Es ist das Auto!\n')
else:
    if aw == 'ja':
        aw = input('Hat es vier Beine?\n')
        if aw == 'ja':
            print('Es ist der Bär!')
        else:
            print('Es ist der Mensch!\n')

Wenn du bei diesem Beispiel etwas anders als exakt “ja” oder “nein” eingibst, verlässt du den if-else-Block ohne Ausgabe. Jetzt ergänzen wir Prüfungsstrukturen:

fehler = 1 #1 steht hier für ja, 0 für nein

while fehler == 1:
    print('Willkommen zu meinem Ratespiel! Ich werde erraten, woran du denkst! Denke an ein Auto, einen Bär oder einen Menschen! Gib bitte immer ein ja oder nein als Antwort ein!\n')
    aw = input("Ist es lebendig?")
    if aw == 'nein':
        fehler = 0
        print('Es ist das Auto!\n')
    else:
        if aw == 'ja':
            aw = input('Hat es vier Beine?\n')
            if aw == 'ja':
                fehler = 0
                print('Es ist der Bär!')
            elif aw == "nein":
                fehler = 0
                print('Es ist der Mensch!\n')
            else:
                fehler = 1
                print("--------\n")
                print("Fehler, schreibe exakt 'ja' oder 'nein'. Also bitte noch mal:\n")

Besonders wichtig ist die Zeile mit fehler = 1, hier nimmt die Prüfungsvariable den Wert 1 an. Damit wird der Anweisungsblock in der while-Schleife erneut durchlaufen, eben solange ein Fehler existiert. In den anderen Anweisungsblöcken, in die ich mit einer gültigen Bedingung hineingelangt bin, wird der fehler = 0 gesetzt. Damit ist dann aber die Bedingung der while-Schleife nicht mehr erfüllt, deshalb kann ich sie verlassen.

while-Schleifen statt for-Schleifen

Es ist möglichst, statt einer for-Schleife einfach eine while-Schleife zu kontruieren

Übung 1

# Beispiel 1
k = 0
while k < 10:
  print(k)
  k += 1 #diese Stelle ist sehr wichtig! Ansonsten läuft dein Code endlos!

#Beispiel 2
for i in range(10):
    print(i)
  1. Probiere beide Codes aus. Du wirst feststellen, dass beide Codes genau die gleiche Ausgabe haben.
  2. Programmiere sowohl mit einer for- als auch while-Schleife einen Code, der 15 mal den gleichen Text ausgibt.
  3. Beantworte die Fragen unten.
Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline-Feedback
Sieh alle Kommentare
0
Freue mich auf deine Ideen, kommentiere!x
()
x