简单的布尔不等式运算符错误

发布于 2021-01-29 15:04:30

使用不等号运算符,我必须定义一个过程weekend,该过程将字符串作为输入,True如果为“ Saturday”或“
Sunday”,False则返回布尔值。

这是我的代码

def weekend(day):
    if day != 'Saturday' or day != 'Sunday':
        return False
    else:
        return True

这似乎False每天都在发生,我不知道为什么,从逻辑上讲它会起作用…有人可以解释吗?

关注者
0
被浏览
80
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    固定版本:

    if day != 'Saturday' and day != 'Sunday'
    

    更好的版本:

    return day in ['Saturday', 'Sunday']
    

    为什么or不起作用:

    当您使用时or,您的状况将显示为“如果今天不是星期六,或者今天不是星期日”。现在,将“今天”替换为“星期六”:

    如果星期六不是星期六或星期六不是星期日

    “星期六不是星期六”的陈述显然是错误的,“星期六不是星期日”的陈述显然是正确的,因此整个陈述变成“如果是错误或正确”,这始终是正确的。

    将“今天”替换为其他任何一天,您会发现该句子的求值结果始终是这些句子之一,这始终是正确的:

    if True or False  # day = Sunday
    if False or True  # day = Saturday
    if True or True   # any other day
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看