Объединение оператора OR в цикле while

#python #python-2.7 #while-loop

#python #python-2.7 #цикл while

Вопрос:

Я создаю небольшую функцию, позволяющую игроку выбирать свою фигуру в начале игры в крестики-нолики (выберите X или O), и по какой-то причине у меня возникают проблемы со следующим кодом. Оператор while не работает с оператором OR в нем. Код запускается, когда я удаляю либо shape != «o», либо shape != «x», но с обоими вариантами в цикле while я никогда не выхожу из цикла while, и меня постоянно спрашивают, какой формой я хочу быть.

 def selectShape():
    shape = ""
    while shape != "o" or shape != "x":
        shape = raw_input("What shape do you want to be? x or o? ")
    if shape == "x":
        print "The computer is player o"
    else:
        print "The computer is player x"
  

Комментарии:

1. shape != "o" or shape != "x" это тавтология; нет строки, которая была бы одновременно "o" и «x» . You meant "and" there. (Or, more idiomatically, , а форма не в [«o», «x»]`)

Ответ №1:

Вас постоянно спрашивают, потому что одно всегда будет истинным.

Если вы выберете X, то: shape != «o»
Если вы выберете O, то: shape!= «x»

Вероятно, вам следует использовать AND вместо OR.

while shape != «o» И shape != «x»:
Таким образом, если ни то, ни другое не верно, он продолжит выдавать запрос. Оно прервется и продолжится, если один из них равен X или O.