这是python或运算符的错误吗?

这是python或运算符的错误吗?,python,operators,Python,Operators,当我运行以下代码时: 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语句为false后,代码是否应该只显示No作为输出?还是我不明白 谢谢您需要在第二次检

当我运行以下代码时:

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语句为false后,代码是否应该只显示No作为输出?还是我不明白


谢谢

您需要在第二次检查中明确说明
i==
<代码>如果i=='y'或i=='Yes'

你所做的是

i == 'n' or 'No'
'No'
i
等于
n
No
<

i == 'n' or i == 'No'
False

您的代码中包含以下内容:

if i == 'y' or 'Yes':
这在Python(以及大多数编程语言)中的含义是:

显然不是你想要的。由于
'Yes'
的计算结果为true,并且任何或true都为true,因此您的
if
主体将执行

要得到你想要的,你应该写:

if i == 'y' or i == 'Yes':

“否”分支也是如此。

问题是,您不能这样做:

如果i=='y'或'Yes':
因为它正在测试是
i==“y”
还是简单的
yes
。由于非空字符串始终返回true,因此第一个if语句将始终运行。第二个if语句也是如此。
因此,尝试改变:
如果i=='y'或'Yes':
如果i=='n'或'No':


如果i=='y'或i=='Yes':
如果i=='n'或i=='No':

像这样:

i=None
O=['n','y','No','Yes']
当我不在O时:
i=输入('是或否?\n')
如果i=='y'或i=='Yes':
打印('是')
如果i=='n'或i=='No':
打印('否')


以下是一个例子:


提示:
'y'或'Yes'是什么意思?
你用错了
i=='y'或'Yes'
(i=='y')或'Yes'
且非空字符串被视为true。
if i == 'y' or i == 'Yes':