首页 > 解决方案 > 'or' 和 'and' 在同一个 if 语句中

问题描述

我想知道为什么这会返回 true:

def parrot_trouble(talking, hour):
  if hour < 7 or hour > 20 and talking == True:
    return True
  else:
    return False

print(parrot_trouble(False, 6))

是因为你不能在同一个 if 语句中使用 'or' 和 'and' 运算符吗?还是其他原因?

标签: python

解决方案


这是,因为AND优先于OR,所以你有

TRUE OR (FALSE AND FALSE)导致TRUE

Operator Precedence可在此处找到广泛的列表:

最重要的是 () > not > and > or >

所以要优先考虑你的OR operator使用()

(hour < 7 or hour > 20) and talking == True 
=> (TRUE OR FALSE) AND FALSE => FALSE

推荐阅读