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

Mar*_*ria 2 python inequality boolean return

使用不等式运算符,我必须定义一个过程周末,它以字符串作为输入,如果是'Saturday'或'Sunday'则返回布尔值True,否则返回False.

这是我的代码

def weekend(day):
    if day != 'Saturday' or day != 'Sunday':
        return False
    else:
        return True
Run Code Online (Sandbox Code Playgroud)

这似乎每天都会返回False,我不知道为什么,从逻辑上说它会起作用.o_o ..任何人都可以解释一下我太正常了:S

Pau*_*nta 6

固定版本:

if day != 'Saturday' and day != 'Sunday'
Run Code Online (Sandbox Code Playgroud)

更好的版本:

return day in ['Saturday', 'Sunday']
Run Code Online (Sandbox Code Playgroud)

为什么or不起作用:

当你使用时or,你的病情会读到"如果今天不是星期六或今天不是星期天".现在用"星期六"替换"今天":

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

声明"星期六不是星期六"显然是错误的,"星期六不是星期天"显然是真的,所以整个声明变成"如果是假的或真实的",这总是正确的.

在任何其他日子替换"今天",你会发现句子总是评估这些句子中的一个,这些句子总是如此:

if True or False  # day = Sunday
if False or True  # day = Saturday
if True or True   # any other day
Run Code Online (Sandbox Code Playgroud)


Sen*_*ran 5

处理此问题的最佳方法是使用以下内容:

return day.lower() in ['saturday','sunday']
Run Code Online (Sandbox Code Playgroud)