While schleifen mit mehreren Ereignissen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
erik32547
User
Beiträge: 4
Registriert: Donnerstag 3. September 2015, 21:13

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( )
nezzcarth
User
Beiträge: 1631
Registriert: Samstag 16. April 2011, 12:47

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Antworten