【问题标题】:Can't understand the logic AND, OR [duplicate]无法理解逻辑 AND、OR [重复]
【发布时间】:2022-08-24 22:21:00
【问题描述】:

这个程序运行良好我只是想了解使用 AND 背后的逻辑。根据我的理解,如果用户输入 X 或 O,它应该打破循环并移至下一行,因此根据这一点,我们必须使用 OR。但是当我使用 OR 这不起作用。

def player_input():
    marker = \' \'
    
    #keep asking the player one about \'O\' or \'X\'
    while marker != \'O\' and marker != \'X\':
    
      marker = input(\'Please select X OR O: \')
    
    player1 = marker
    
    if player1 == \'X\':
    player2 = \'O\'
    else:
    player2 = \'X\'
    
    return player1,player2
  • \"如果用户输入 X 或 O 它应该打破循环\"在逻辑上等价于 \"只要用户输入的东西不是 X 并且不是 O 它应该继续循环\",那是这里实现了什么。要使用or 实现逆运算,您可以先执行while true,然后执行if marker == \'O\' or marker == \'X\': break,或者显式反转while 的条件。

标签: python


【解决方案1】:

这个问题源于否定的使用。想一想:如果你的条件是marker != 'O' or marker != 'X',那么这个条件会总是无论用户为marker 输入什么内容,都会得到满足。如果用户输入'O',则满足第二个条件(因为标记不是'X');如果用户输入'X',则满足第一个条件(因为标记不是'O');如果用户输入其他任何内容,这两个条件都将得到满足。在所有这些情况下,or 连接词意味着条件将始终评估为True,并且您陷入了无限循环。

结论:如果在条件中使用否定而不是肯定,则必须将 and 翻转为 or(反之亦然)——这种现象在形式逻辑中被称为德摩根定律。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多