Python中“或”和按位运算符之间的区别

时间:2016-11-10 16:07:15

标签: python operators

我对python编程很新,最近我遇到了这个问题。

while(True):
panelType = input("Enter the type of panel[a, b, c, d]: ")
if(panelType.lower() != "a"
    | panelType.lower() != "b"
    | panelType.lower() != "c"
    | panelType.lower() != "d"):
    logger.error("Not a valid input. Try Again")
else:
    break

当我使用按位运算符时,我收到此错误:unsupported operand type(s) for |: 'str' and 'str'。但是,一旦我将其更改为OR运算符,它运行良好。

有人可以解释为什么会这样吗?

由于

1 个答案:

答案 0 :(得分:4)

!=的优先级低于|,所以它尝试计算"a" | panelType.lower(),这没有任何意义。

|是一个用于数字的运算符,类似于*+,所以在进行>或{等比较之前计算它是有意义的{1}}。在这种情况下,您需要!=,其优先级更低。

更好的是:

or