Python If Elseif Else工作异常



Guys我在python中使用idelifelse语句尝试非常基本的程序。我觉得有些地方不对。查看下面的代码。

YourChoice = input(str("Do you want to Continue?(Y/N): "))
YourChoiceLower = YourChoice.lower()
if YourChoiceLower == 'y' or 'yes':
    print("Yes Block Statement")
elif YourChoiceLower == 'n' or 'no':
    print("No Block Statement")
else:
    print("Wrong Choice")

现在,当我运行上面的代码时,它只会问我Y/N问题。当我键入yYes时,它只返回If块语句

但当我键入nNo时,它仍然执行If块,而不是ElseifElse

查看下面的执行行

>>>Do you want to Continue?(Y/N): Y Yes Block Statement

>>>Do you want to Continue?(Y/N): YeS Yes Block Statement

>>>Do you want to Continue?(Y/N): N Yes Block Statement

>>>Do you want to Continue?(Y/N): nO Yes Block Statement

>>>Do you want to Continue?(Y/N): Somethingelse Yes Block Statement

>>>

有人能解释一下发生了什么吗?我很困惑为什么它工作起来很奇怪
请指导我,朋友们
提前感谢:-)

注意:我使用的是Python 3.4

条件YourChoiceLower == 'y' or 'yes'并不像您想象的那样工作。它检查是YourChoiceLower == 'y'还是'yes'。最后一个子表达式'yes'毫无意义。

相反,条件需要检查两个子表达式中的YourChoiceLower,如

if YourChoiceLower == 'y' or YourChoiceLower == 'yes':
    ...

你可以很容易地在互动会话中亲自检查:

>>> a = 'a'
>>> a == 'a' or 'b'
True

结果是True,因为a == 'a'为真。但随后:

>>> a = 'b'
>>> a == 'a' or 'b'
'b'

在这里,您不再获得布尔结果,而是返回字符串'b'。这是因为a == 'a'为假,所以对or的右侧进行评估,得到结果'b'

最新更新