编码蝙蝠错了,还是我的代码错了?

时间:2018-04-02 01:19:44

标签: python

我一直在CodingBat上练习,而且我坚持使用Logic-1> alarm_clock问题。这是我的代码

def alarm_clock(day, vacation):
  if 0 < day < 6 and not vacation:
    return "7:00"
  elif day == 0 or day == 6 and not vacation:
    return "10:00"
  elif day == 6 or day == 0 and vacation:
    return "off"
  else:
    return "10:00"

然而,该网站告诉我,我的代码不正确。   This is the website

1 个答案:

答案 0 :(得分:5)

你的问题在这里(并重复下一句):

elif day == 0 or day == 6 and not vacation:

在Python中(遵循大多数早期的计算机语言)and的优先级高于or。与2 + 3 * 5表示2 + (3*5)而非(2+3) * 5的方式相同,您的代码并不代表(day==0 or day==6) and not vacation,这意味着day==0 or (day==6 and not vacation)

要解决此问题,只需添加明确的括号(在两个子句中)。

但请注意,您在一行上有day == 0 or day == 6,而另一行有day == 6 or day == 0,但这些情况实际上是相同的。所以你可以简化一下:

elif day == 0 or day == 6:
    if not vacation:
        return "10:00"
    els:
        return "off"

......然后问题就出现了。