python 使用OR关键字时yes/no循环无法正常工作[duplicate]

nle07wnf  于 2022-11-28  发布在  Python
关注(0)|答案(3)|浏览(150)

此问题在此处已有答案

Why does "a == x or y or z" always evaluate to True? How can I compare "a" to all of those?(6个答案)
昨天关门了。
我正在使用是/否循环,使一个无限循环,将结束时,用户输入否或否,但程序不能正常工作。我知道什么是错误,但我不知道为什么它发生这样的。谁能告诉如何修复错误,而不改变我的初始程序
当我使用这段代码时,它可以工作,但当我在中使用if a=='yes'或'Yes'和elif a=='no'或'No'时,即使我输入no,输出也会显示if语句的print语句。
没有OR条件的我的程序

while True:
    a = input("Enter yes/no to continue")
    if a=='yes':
        print("enter the program")
    elif a=='no':
        print("EXIT")
        break
    else:
        print("Enter either yes/no")

我的初始程序带有OR条件

while True:
    a = input("Enter yes/no to continue")
    if a=='yes' or 'Yes':
        print("enter the program")
    elif a=='no' or 'No':
        print("EXIT")
        break
    else:
        print("Enter either yes/no")
rdlzhqv9

rdlzhqv91#

or语句中,必须将a与所有表达式中的值进行比较:

while True:
    a = input("Enter yes/no to continue")
    if a == 'yes' or a == 'Yes':
        print("enter the program")
    elif a == 'no' or a == 'No':
        print("EXIT")
        break
    else:
        print("Enter either yes/no")

一个更复杂的方法是在你的例子中使用.lower()

a == 'yes' or a == 'Yes'  # is equeal to:
a.lower() == 'yes'
nszi6y05

nszi6y052#

您有几个选项:

while True:
    a = input("Enter yes/no to continue")
    if a.lower()=='yes':
        print("enter the program")
    elif a.lower()=='no':
        print("EXIT")
        break
    else:
        print("Enter either yes/no")

也可以执行以下操作:

while True:
    a = input("Enter yes/no to continue")
    if a=='yes' or a=='Yes':
        print("enter the program")
    elif a=='no' or a=='No':
        print("EXIT")
        break
    else:
        print("Enter either yes/no")
enxuqcxy

enxuqcxy3#

当你使用or时,你应该再写一次完整的条件。
在这里如果你想检查a=="Yes",你应该完全声明它。

if a == 'yes' or a == 'Yes':
...

您也可以使用此选项:

if a.lower() == 'yes'
...

相关问题