无法在python中的一行代码中理解AND运算符

时间:2018-08-30 20:08:30

标签: python python-3.x

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

def player_input():

    choice = ''

    while choice != "X" and choice != "O":
        choice = input("Player 1, choose X or O: ")

    pl1 = choice

    if pl1 == "X":
        pl2 = "O"
    else:
        pl2 = "X"

return (pl1, pl2)

上面的代码可以正常工作,但是我不太理解在特定情况下“和”如何工作。如果我理解正确,“和”意味着两个条件都必须成立。但是,在任何给定时间,选择只能是“ X”或“ O”。

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

谢谢!

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

该条件用英语表示“您的选择不是X且您的选择不是O”,换句话说,“您的选择既不是X也不是O”。这是一段时间的一部分,因此基本上是说它将循环,直到您给出既不是X也不是O的东西。换句话说,当您给它输入X或

答案 2 :(得分:0)

确实可以,但是也很难理解。其他人已经解释了它是如何工作的,但是我想提出该函数的另一个版本,该版本具有相同的功能,但是更短并且更容易理解:

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

choice = player_input()

答案 3 :(得分:0)

“和”连接变量“选择”上的两个检查。如果两者都为真,则将重复;如果两者为假,则将退出“ while”。如果用括号括起来,可能会更清楚。

同时(选择不是“ X”)和(选择不是“ O”):

首先,您要检查选择项是否不是“ X”,如果是,则检查选择项是否不是“ O”,如果这也是正确的,则您具有“ true”和“ true”,即“ true”。 如果选择是“ X”或“ O”,则将得到“ false”和“ true”,或者得到“ true”和“ false”,即“ false”。

通常,对于任何“与”为真,“与”的两面都必须为真。 对于“或”,只有一方必须为“真”才能评估为“真”。

答案 4 :(得分:0)

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

  • not x and not b == not (x or b)
  • not x or not b == not (x and b)

但是我可以向您保证是这种情况。实际上,这是demorgans theorem上完整的维基百科页面(上面有陈述),证明是这样。