Python 当尝试从While not循环转换为While循环时,While循环未中断

Python 当尝试从While not循环转换为While循环时,While循环未中断,python,Python,我正在开发一个小游戏函数,要求玩家输入一个标记“X”或“O”来表示它们。当我尝试使用while循环而不是while not循环时,结果是无论您输入什么,都会不断请求输入。我已经研究了一段时间,没有发现任何东西,这可能是一个非常简单的错误,所以一个简短的答复可以帮助我很多。谢谢大家 def player_input(): marker='' while (marker != 'X' or marker != 'O'): marker = input('Choose

我正在开发一个小游戏函数,要求玩家输入一个标记“X”或“O”来表示它们。当我尝试使用while循环而不是while not循环时,结果是无论您输入什么,都会不断请求输入。我已经研究了一段时间,没有发现任何东西,这可能是一个非常简单的错误,所以一个简短的答复可以帮助我很多。谢谢大家

def player_input():
    marker=''

    while (marker != 'X' or marker != 'O'):
        marker = input('Choose your marker ').upper()

    if marker == 'X':
        return ('X','O')
    else:
        return ('O','X')

def player_input():
    marker = ''

    while not (marker == 'X' or marker == 'O'):
        marker = input('Player 1: Do you want to be X or O? ').upper()

    if marker == 'X':
        return ('X', 'O')
    else:
        return ('O', 'X')
布尔逻辑:
!(A v B)=(!A^!B)

v-或

^-及

!-不是

上功能中的条件应为:

while (marker != 'O' and player1 != 'X'):

i、 例如,
,而不是

你的两个表达式是不等价的。很好!非常感谢。
Let's split into pieces

(marker != 'X' or player1 != 'O')

If we input 'X' then :
marker != 'X'  -> 'X' != 'X' -> False
player1 != 'O' -> 'X' != 'O' -> True
(marker != 'X' or player1 != 'O') -> (False or True)

The output will be True 


not (marker == 'X' or marker == 'O')

marker == 'X' -> 'X' == 'X' -> True
marker == 'O' -> 'X' == 'O' -> False
(marker == 'X' or marker == 'O') -> (True or False)
True 

and not will make it to be False 

If you want to make it work it should be :

not (marker == 'X') or not (marker == 'O')