OR逻辑运算符的循环不按我的预期运行

时间:2017-10-15 21:10:22

标签: python python-3.x

我想循环遍历列表以检查其元素是否与某些东西不相等。代码如下......

def full_board_check(board):
    for item in board:
        if item != 'X' or item != 'O':
            return False
        else:
            return True

无论通过该函数的列表是什么,它总是输出false。 但是,如果我将if语句更改为仅考虑其中一个条件,则会成功检查该条件。

def full_board_check(board):
    for item in board:
        if item != 'X':
            return False
        else:
            return True

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

如果True中的每个元素都有效,您希望返回item。你不应该在那里使用or,你应该使用and

与字符串进行比较并使用in进行成员资格测试会更容易。您也可以使用all更简洁地完成此操作。

for item in board:
    return all(x in 'XO' for x in item)

答案 1 :(得分:0)

你有一个逻辑问题。我建议你学习一些逻辑来完全理解编程中的逻辑语句。没有任何字母可以与X或O不同。如果您评估X,那么该字母与O不同,因此输出为False,而X则相同。在更多数学语言中,您评估的子集是无效的。

如果要评估每个元素不是X或O.

    if item == 'X' or item == 'O':
        return True
    else:
        return False

我希望这会有所帮助