如果声明列出异常

时间:2015-03-14 21:01:05

标签: python

我对此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

一切都是真的。

任何人都可以告诉我哪里出错了吗?

1 个答案:

答案 0 :(得分:3)

  

如果不是工作日或者我们正在休假,我们会睡觉。

这最好用直接布尔比较表示。

def sleep_in(weekday, vacation):
    return not weekday or vacation

公平警告:如果其中任何一个参数都是真实的,这将评估为True

说到“truthy”,expersion (True, False)是一个元组,因为它是一个非空元组,它将评估为True。作为参考,评估为False的{​​{3}}。该列表之外的任何内容都将在布尔上下文中评估为True