2015-05-05 2 views
2

Так что мой цикл while просто зацикливается, даже если это не так, если есть только одно условие, которое работает цикл, а затем переходит к следующим строкам кода, но когда я добавляю оператор OR, он не работает , Я уверен, что это что-то очень глупо, но я всего лишь новичок и пытаюсь исследовать это.В то время как цикл с несколькими условиями

Choice = input("What would you like to do? New Game, Continue, or Quit?").upper() 
while Choice != "NEW GAME" or Choice != "QUIT": 
    print ("That input was invalid, please try again.") 
    Choice = input("What would you like to do? New Game, Continue, or Quit? ").upper() 
    if Choice == "QUIT": 
     quit() 

ответ

5

Условие

Choice != "NEW GAME" or Choice != "QUIT" 

всегда будет True. Любое значение Choice будет либо не "NEW GAME", либо не "QUIT". Вместо этого используйте:

Choice != "NEW GAME" and Choice != "QUIT": 
+0

Это было просто .... Я всегда думал и имел в виду, что оба условия должны быть правдой, но это сработало, спасибо :) –

+0

Это именно то, что означает 'и'. Но условия в этом случае - '! =', А не '='. –

0

Я предполагаю, что вы хотите and там, а не or ...

Поскольку Choice не может быть одновременно не отличных от "NEW GAME" и от "QUIT". Другими словами, ваше условие цикла всегда равно True независимо от значения Choice.

2

Я думаю, что вы ищете

while Choice not in ["New Game", "Continue", "Quit"]

или лучше позволить альтернативной капитализации:

while Choice.upper() not in ["NEW GAME", "CONTINUE", "QUIT"]

Также пожалуйста uncapitalize переменную Choice. Когда другие программисты на Python видят переменную, начинающуюся с заглавной буквы, они сначала предполагают, что это имя класса.

Смежные вопросы