小编典典

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

python

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

这是我的代码

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

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


阅读 213

收藏
2021-01-20

共1个答案

小编典典

固定版本:

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
2021-01-20