Ifelifelse语句在简单的python3.3类中不起作用?

2024-04-24 05:35:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码是:

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 elif工作。我不知道还能做什么,因为我已经试过了我知道的一切。同时,我在上面的代码中缩进了4个空格。**编辑:很抱歉,错误是它总是运行“if”,它从不超过第一个if行,无论您输入什么进行确认


Tags: or代码nameinputifisdefupper
1条回答
网友
1楼 · 发布于 2024-04-24 05:35:58

条件confirm.upper() == "Y" or "YES"和另一个条件的计算结果与预期不符。你想要吗

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

或者

^{pr2}$

您的病情相当于:

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

什么都不要做。函数返回的值不会保存在任何地方,name和{}也不会被更改。而且,它们已经是字符串了,因为它们包含input()的返回值。在

相关问题 更多 >