Seite 1 von 1

While schleifen mit mehreren Ereignissen

Verfasst: Samstag 5. September 2015, 11:26
von erik32547
Hallo,
ich hätte eine frage bezüglich while schleifen. Ich würde gerne die while schleife solange laufen lassen bis ich ,,aufhören" schreibe, aber eben für verschiedene Ereignisse. Heißt also wenn ich "x" als aufhören definiere, soll die while schleife aufhören, aber auch wenn ich "y" als aufhören definiere. Eine Fehlermeldung kommt nicht, allerdings reagiert das Programm nicht auf ,,Aufhören". Die while Schleife geht einfach weiter. Vielen dank im voraus.

Hier mein Fehler:
x = 1
y = 2


while x != "aufhören" or y != "aufhören":
x = raw_input( )
y = raw_input( )

Re: While schleifen mit mehreren Ereignissen

Verfasst: Samstag 5. September 2015, 11:44
von nezzcarth
Dass das nicht funktioniert, liegt an dem logischen Ausdruck im Schleifenkopf. Die Schleife wird solange ausgeführt, wie der Gesamtausdruck wahr ist.
Das ist nur dann nicht der Fall, wenn sowohl x als auch y den Wert 'aufhören' haben. Damit das funktioniert, müsstest du oder durch und ersetzen.

Ich würde folgendes bevorzugen:

Code: Alles auswählen

while True:
    x = input()
    y = input()
    if x == 'aufhören' or y == 'aufhören':
        break

Re: While schleifen mit mehreren Ereignissen

Verfasst: Samstag 5. September 2015, 14:15
von cofi
Um Bugs durch den falsch geschriebenen String zu vermeiden kann man noch folgendes tun:

Code: Alles auswählen

while True:
    x = input()
    y = input()
    if 'aufhören' in (x, y):
        break
Alternativ kann das Stoppwort vorher natuerlich auch an einen Namen binden und dann `x` und `y` mit dem Namen vergleichen.