Guys我在python中使用id
、elif
和else
语句尝试非常基本的程序。我觉得有些地方不对。查看下面的代码。
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问题。当我键入y
或Yes
时,它只返回If
块语句
但当我键入n
或No
时,它仍然执行If
块,而不是Elseif
或Else
块
查看下面的执行行
>>>
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'
。