我对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运算符,它运行良好。
有人可以解释为什么会这样吗?
由于
答案 0 :(得分:4)
!=
的优先级低于|
,所以它尝试计算"a" | panelType.lower()
,这没有任何意义。
|
是一个用于数字的运算符,类似于*
或+
,所以在进行>
或{等比较之前计算它是有意义的{1}}。在这种情况下,您需要!=
,其优先级更低。
更好的是:
or