【问题标题】:Difference between "or" and bitwise operator in Python [duplicate]Python中“或”和按位运算符之间的区别[重复]
【发布时间】:2016-11-10 16:07:15
【问题描述】:

我是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 运算符,它就运行良好。

谁能解释为什么会这样?

谢谢

【问题讨论】:

  • 使用if panelType.lower() not in set(['a', 'b', 'c', 'd'])

标签: python operators


【解决方案1】:

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

| 是一个用于数字的运算符,类似于*+,因此在进行比较之前计算它是有意义的,例如>!=。在这种情况下,您需要or,它的优先级更低。

更好:

if panelType.lower() in ('a', 'b', 'c', 'd'):

【讨论】:

  • 酷!谢谢您的帮助。我试图在其他帖子中找到答案,但我只是不知道要搜索什么
猜你喜欢
  • 2011-09-11
  • 2017-12-25
  • 2010-12-30
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 2014-03-28
相关资源
最近更新 更多