我的代码是:
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个空格。 **编辑:抱歉,错误是它总是运行“如果”,它永远不会超过第一个if行,无论你输入什么进行确认
答案 0 :(得分:10)
条件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)
什么都不做。函数返回的值不会保存在任何位置,name
和confirm
不会更改。此外,它们已经是字符串开头,因为它们的返回值为input()
。