If-elif-else语句在简单Python 3.3类中不起作用?

9rbhqvlz  于 2022-12-05  发布在  Python
关注(0)|答案(2)|浏览(118)

我的代码是:

def nameAndConfirm():
    global name,confirm
    print("What is your name? ")
    name = input()
    str(name)
    print("Is",name,"correct? ")
    confirm = input()
    str(confirm) 
    print(confirm)

    if confirm.upper() == "Y" or "YES":
        classSelection()
    elif confirm.upper() == "N" or "NO":
        nameAndConfirm()
    else:
        print("Valid answers are Y/Yes or N/No!")
        nameAndConfirm()

nameAndConfirm()

对这段代码的评论也很好。我知道它非常狡猾,我知道如何在某些方面使它更短,但我试图让我的if-elif-else工作。我不知道我还能做什么,因为我已经尝试了我所知道的一切。此外,我在上面的代码中缩进了4个空格。**编辑:对不起,错误是它总是运行“如果”,它永远不会超过第一个如果行,无论你输入什么进行确认

5m1hhzi4

5m1hhzi41#

条件confirm.upper() == "Y" or "YES"和另一个条件的计算结果与您预期的不同。

confirm.upper() in {"Y", "YES"}

confirm.upper() == "Y" or confirm.upper() == "YES"

您的条件相当于:

(confirm.upper() == "Y") or "YES"

这是千真万确的:

In [1]: True or "Yes"
Out[1]: True

In [2]: False or "Yes"
Out[2]: 'Yes'

在另一个注解中,

str(name)

str(confirm)

不要做任何事情。函数返回的值不会保存在任何地方,nameconfirm也不会改变。而且,它们开始就是字符串,因为它们保存的是input()的返回值。

dgiusagp

dgiusagp2#

这不是在if条件中实现“or”的正确方式:
确认.上限()==“Y”或确认.上限()==“YES”
应该是这样

相关问题