Python 为什么我的功能会被我的签名者拒绝?

Python 为什么我的功能会被我的签名者拒绝?,python,if-statement,boolean,operators,Python,If Statement,Boolean,Operators,对于以下问题: 我们有一只会大声说话的鹦鹉。hour参数是范围为0..23的当前小时时间。如果鹦鹉在说话,而时间在7点之前或20点之后,我们就有麻烦了。如果我们遇到麻烦,返回True 我编写了以下函数: def parrot_trouble(talking, hour): if talking == True and hour >= 20 or hour <= 7: return True else: return False 我一定是错误地使用了运算符,但

对于以下问题:

我们有一只会大声说话的鹦鹉。
hour
参数是范围为0..23的当前小时时间。如果鹦鹉在说话,而时间在7点之前或20点之后,我们就有麻烦了。如果我们遇到麻烦,返回
True

我编写了以下函数:

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

我一定是错误地使用了运算符,但我仍然不明白为什么。

这里的一个问题是。当你把一个布尔语句写为
a和B或C
时,不清楚你的意思是
(a和B)还是
a和(B或C)
。在Python(事实上是大多数语言)中,
的优先级高于
,因此该条件被视为是
(a和B)或C
。在这种情况下,这不是你想要的。正确的说法是:


if talking==True and(hour>=20或hour这里的一个问题是。当你用一个布尔语句表示
a和B或C
时,不清楚你在Python(事实上是大多数语言)中是指
(a和B)还是C
a和(B或C)
的优先级高于
,因此该条件被视为是
(a和B)或C
。在这种情况下,这不是您要查找的。正确的语句是:


if talking==True和(hour>=20或hourHi使用if,如下所示:

def parrot_故障(谈话,小时):


if Talking==真且(小时>20或小时高)使用if,如下所示:

def parrot_故障(谈话,小时):

如果对话==正确且(小时>20或小时)
parrot_trouble(True, 20)
parrot_trouble(False, 6)
parrot_trouble(True, 7)