这是python OR运算符的错误吗? [重复]

问题描述 投票:-1回答:3

当我运行以下代码时:

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')

输出是ñ是否

自第一个if语句为假以来,代码应该仅将No显示为输出吗?还是我听不懂?

谢谢

python operators
3个回答
1
投票

这是问题,您不能做:

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

正在测试i == 'y'还是仅是yes。由于非空字符串始终返回true,因此第一个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')

这里是一个例子:click


2
投票

您需要在第二张支票中明确声明i ==if i =='y' or i == 'Yes'

您所做的是

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

[i等于nNo] No,因为它不等于n

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

1
投票

您的代码中有这个:

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

在Python(和大多数编程语言)中,此含义是:

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

显然不是您想要的。由于'Yes'的计算结果为true,而任何OR true均为true,则您的if的主体将执行。

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

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

与“否”分支相同。

© www.soinside.com 2019 - 2024. All rights reserved.