Python 3.x 我是python新手,我正在尝试构建一个简单的Tic-Tac-Tock游戏。当我从用户那里获取输入时,它会进入无限循环 def player_input(): player1='' player2='' 而玩家1!=“X”或player1=“O”: player1=输入('从X或O中选择')。上限() 如果player1='X': player2='O' 返回(player1、player2) elif player1=='O': player2='X' 返回(player1、player2)

Python 3.x 我是python新手,我正在尝试构建一个简单的Tic-Tac-Tock游戏。当我从用户那里获取输入时,它会进入无限循环 def player_input(): player1='' player2='' 而玩家1!=“X”或player1=“O”: player1=输入('从X或O中选择')。上限() 如果player1='X': player2='O' 返回(player1、player2) elif player1=='O': player2='X' 返回(player1、player2),python-3.x,tic-tac-toe,Python 3.x,Tic Tac Toe,当我运行时,它将进入无限循环。但是,当我将while循环更改为而不是(player1==“X”或player1==“O”)时,我的代码运行良好。有人能解释一下我的两个while循环之间的区别吗?您的条件是错误的,您基本上希望处于while循环中,直到用户输入X或O。因此,这意味着: not (player1 == "X" or player1 =="O") 如果您不熟悉布尔代数,这可能会有点混乱。基本上你有以下几点: X和Y,因此not(X和Y)在逻辑上等同于notx或noty。就您而言,您有

当我运行时,它将进入无限循环。但是,当我将while循环更改为
而不是(player1==“X”或player1==“O”)
时,我的代码运行良好。有人能解释一下我的两个while循环之间的区别吗?

您的条件是错误的,您基本上希望处于while循环中,直到用户输入X或O。因此,这意味着:

not (player1 == "X" or player1 =="O")
如果您不熟悉布尔代数,这可能会有点混乱。基本上你有以下几点:

X和Y
,因此
not(X和Y)
在逻辑上等同于
notx或noty
。就您而言,您有:

not (player1 == "X" or player1 =="O")
这在逻辑上等同于:

player1 != "X" and player1 != "O"

如果您想了解更多这方面的信息,您可以阅读有关

的内容,您可能需要使用一个来实现这一点,或者查看
player1!=“X”或player1=“O”
:这是一个重言式(即它总是
真的
)。想一想,谢谢,我知道了。