【问题标题】:Why is my function getting rejected by my autograder?为什么我的函数被我的自动评分器拒绝?
【发布时间】:2021-04-10 20:25:17
【问题描述】:

针对以下问题:

我们有一只会说话的鹦鹉。 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

当参数为:

parrot_trouble(True, 20)
parrot_trouble(False, 6)
parrot_trouble(True, 7)

我一定是用错了运算符,但我还是不明白为什么。

【问题讨论】:

    标签: python if-statement boolean operators


    【解决方案1】:

    这里的问题之一是operator precedence。当您输入一个布尔语句 A and B or C 时,不清楚您的意思是 (A and B) or C 还是 A and (B or C)。在 Python(实际上是大多数语言)中,and 的优先级高于or,因此条件被视为(A and B) or C。在这种情况下,这不是您要寻找的。正确的说法是:

      if talking == True and (hour >= 20 or hour <= 7):
    

    【讨论】:

      【解决方案2】:

      嗨,使用 if 如下:

      def parrot_trouble(说话,小时):

      如果 Talking == True 并且(小时 > 20 或小时

      打印(parrot_trouble(False, 21))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-04
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        • 2022-07-15
        • 2014-09-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多