这是 python OR 运算符的错误吗?
Is this a bug with the python OR operator?
当我运行以下代码时:
i = None
O = ['n', 'y', 'No', 'Yes']
while i not in O:
i = input('Yes or No?\n')
if i == 'y' or 'Yes':
print('Yes')
if i == 'n' or 'No':
print('No')
输出是
n
是的
否
由于第一个 if 语句为假,代码是否应该只显示 No 作为输出?还是我没看懂?
谢谢
您需要在第二次检查时明确说明i ==
; if i =='y' or i == 'Yes'
你所做的是
i == 'n' or 'No'
'No'
i
等于 n
或 No
< 这输出 No
因为它不等于 n
i == 'n' or i == 'No'
False
你的代码中有这个:
if i == 'y' or 'Yes':
this 在Python(以及大多数编程语言)中的含义是:
if (i == 'y') or ('Yes'):
显然不是你想要的。由于 'Yes'
的计算结果为 true,并且任何 OR true 为真,您的 if
s 主体将执行。
要得到你想要的,你应该写:
if i == 'y' or i == 'Yes':
"no" 分支也一样。
问题来了,你做不到:
if i == 'y' or 'Yes':
因为它正在测试 i == 'y'
还是普通的 yes
。由于非空字符串始终 return 为真,因此第一个 if 语句将始终 运行。然后第二个 if 语句也是如此。
所以尝试改变:
if i == 'y' or 'Yes':
和 if i == 'n' or 'No':
到
if i == 'y' or i == 'Yes':
和 if i == 'n' or i == 'No':
像这样:
i = None
O = ['n', 'y', 'No', 'Yes']
while i not in O:
i = input('Yes or No?\n')
if i == 'y' or i == 'Yes':
print('Yes')
if i == 'n' or i == 'No':
print('No')
Here is an example: click
当我运行以下代码时:
i = None
O = ['n', 'y', 'No', 'Yes']
while i not in O:
i = input('Yes or No?\n')
if i == 'y' or 'Yes':
print('Yes')
if i == 'n' or 'No':
print('No')
输出是 n 是的 否
由于第一个 if 语句为假,代码是否应该只显示 No 作为输出?还是我没看懂?
谢谢
您需要在第二次检查时明确说明i ==
; if i =='y' or i == 'Yes'
你所做的是
i == 'n' or 'No'
'No'
i
等于 n
或 No
< 这输出 No
因为它不等于 n
i == 'n' or i == 'No'
False
你的代码中有这个:
if i == 'y' or 'Yes':
this 在Python(以及大多数编程语言)中的含义是:
if (i == 'y') or ('Yes'):
显然不是你想要的。由于 'Yes'
的计算结果为 true,并且任何 OR true 为真,您的 if
s 主体将执行。
要得到你想要的,你应该写:
if i == 'y' or i == 'Yes':
"no" 分支也一样。
问题来了,你做不到:
if i == 'y' or 'Yes':
因为它正在测试 i == 'y'
还是普通的 yes
。由于非空字符串始终 return 为真,因此第一个 if 语句将始终 运行。然后第二个 if 语句也是如此。
所以尝试改变:
if i == 'y' or 'Yes':
和 if i == 'n' or 'No':
到
if i == 'y' or i == 'Yes':
和 if i == 'n' or i == 'No':
像这样:
i = None
O = ['n', 'y', 'No', 'Yes']
while i not in O:
i = input('Yes or No?\n')
if i == 'y' or i == 'Yes':
print('Yes')
if i == 'n' or i == 'No':
print('No')
Here is an example: click