我一直在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
答案 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"
......然后问题就出现了。