Can';我不理解python中一行代码中的AND运算符

Can';我不理解python中一行代码中的AND运算符,python,python-3.x,Python,Python 3.x,我有以下功能,基本上要求用户输入“X”或“O”选项。我使用while循环不断询问用户,直到得到“X”或“O”的答案 上面的代码工作得很好,但我不明白“and”在这个特定场景中是如何工作的。如果我理解正确,“and”意味着这两个条件都必须为真。但是,在任何给定时间,只能选择“X”或“O” 请帮助我理解这一点。如果你认为这是一个愚蠢的问题,请提前道歉。一般来说,我对python和编程都是新手 谢谢大家! 在这种情况下,在进入while循环之前,选项以空白开始。在while循环中,要求玩家选择X或O。

我有以下功能,基本上要求用户输入“X”或“O”选项。我使用while循环不断询问用户,直到得到“X”或“O”的答案

上面的代码工作得很好,但我不明白“and”在这个特定场景中是如何工作的。如果我理解正确,“and”意味着这两个条件都必须为真。但是,在任何给定时间,只能选择“X”或“O”

请帮助我理解这一点。如果你认为这是一个愚蠢的问题,请提前道歉。一般来说,我对python和编程都是新手


谢谢大家!

在这种情况下,在进入while循环之前,选项以空白开始。在while循环中,要求玩家选择X或O。该条件强制用户输入X或O。如果用户键入Z,则该条件为true,并重复循环,要求另一个输入。如果用户键入X或O,则条件现在返回false,while循环退出。

在英语中,条件表示“您的选择不是X,您的选择不是O”,换句话说,“您的选择既不是X也不是O”。这只是一段时间的一部分,所以它基本上是说它会循环,直到你不给它一个既不是X也不是O的东西。换句话说,它只会在你给它一个X或O时停止循环。

的确,它有效,但也很难理解。其他人已经解释了它是如何工作的,但我想提出另一个版本的函数,它做同样的事情,但更短,更容易理解:

def player_input():
    choice = ''
    while choice not in ["X" ,"O"]:
        choice = input("Player 1, choose X or O: ")             
    return choice

choice = player_input()

“and”连接变量“choice”上的两个检查。若两者都是真的,它将重复,若其中一个为假,它将退出“while”。如果用括号括起来,可能会更清楚一点

而(选项不是“X”)和(选项不是“O”):

首先,检查选项是否不是“X”,如果是真的,检查选项是否不是“O”,如果也是真的,则有“true”和“true”,即“true”。 如果选择是“X”或“O”,则会得到“false”和“true”或“true”和“false”,即“false”

总的来说,任何“和”都必须是真的。
对于“或”而言,只有一方必须为“真”才能评估为“真”。

我认为真正让你困惑的是你不相信

  • 非x和非b==非(x或b)
  • 非x或非b==非(x和b)

不过,我可以向你保证,情况就是这样。事实上,这里有一个完整的维基百科页面(上面说明了这一点)证明了这一点。

它会在用户提供X或O之前对用户进行重新排序。你可能会想到
choice==“X”和choice==“O”
,这永远不会是真的。
def player_input():
    choice = ''
    while choice not in ["X" ,"O"]:
        choice = input("Player 1, choose X or O: ")             
    return choice

choice = player_input()