伙计我正在使用id
,elif
和else
语句在python中尝试非常基本的程序。我觉得有些不对劲。看看下面的代码。
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
答案 0 :(得分:1)
条件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'
为false,因此评估or
的右侧,得到结果'b'
。