我对此codebat问题有疑问:
如果是工作日,参数weekday为True,如果我们休假,参数vacation为True。如果不是工作日或者我们休假,我们会睡觉。如果我们入睡,则返回True。
sleep_in(False,False)→True sleep_in(True,False)→False sleep_in(False,True)→True
这是我的解决方案:
def sleep_in(weekday, vacation):
if (True, False):
return False
else:
return True
结果又回来了:
sleep_in(False, False) → True False X
sleep_in(True, False) → False False OK
sleep_in(False, True) → True False X
sleep_in(True, True) → True False X
我很困惑为什么会出错。
在我的解决方案中,我说:
if (True, False):
return False
一切都是真的。
任何人都可以告诉我哪里出错了吗?
答案 0 :(得分:3)
如果不是工作日或者我们正在休假,我们会睡觉。
这最好用直接布尔比较表示。
def sleep_in(weekday, vacation):
return not weekday or vacation
公平警告:如果其中任何一个参数都是真实的,这将评估为True
。
说到“truthy”,expersion (True, False)
是一个元组,因为它是一个非空元组,它将评估为True
。作为参考,评估为False
的{{3}}。该列表之外的任何内容都将在布尔上下文中评估为True
。