我不明白为什么我以后不能使用user\u选项,因为它“未定义”

2024-04-24 04:57:50 发布

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

def user_input():
    x = input("Choose :Charizard, Blastoise, or Venusaur: ")
    if x in "char":
        user_choice = "Charizard"
    elif x in "blast":
        user_choice = "Blastoise"
    elif x in "ven":
        user_choice = "Venusaur"
    return user_choice


user_input()

print(user_choice)

erorr=NameError:未定义名称“用户选择”

我想稍后使用user_选项


Tags: orininputifdefblastchoiceelif
3条回答

基本上,你要检查这些字符是否在字符串中,而不是在相反的位置。见下文:

def user_input():
    x = input("Choose :Charizard, Blastoise, or Venusaur: ")
    if "Char" in x:
        user_choice = "Charizard"
    elif "Blast" in x:
        user_choice = "Blastoise"
    elif "Ven" in x:
        user_choice = "Venusaur"
    return user_choice

print(user_input())

但我建议您通过将选项显示为数字,然后他们从列表中输入数字,从而使代码更加健壮。您还可以添加一些验证,以确保他们只输入这三个名称中的一个,这样您就不会出现未定义的错误

编辑

另外,正如其他一些人指出的那样,你没有保存回报的输出。例如,当您有任何函数时,让我们说:

def main():
    return 'Hello World'

如果调用x = main(),那么x='Hello World'在您的示例中,您试图在作用域之外访问该变量,而不是将函数的返回保存在任何位置。看一看我的代码,它应该按照您的要求运行

如果你问为什么不给user_choice一个None的值,那是因为你从来没有定义过user_choice如果那些If语句都不是真的

您希望您的代码更像这样。您的代码中有多个错误,我已全部修复

def user_input():
    user_choice = "" # Defined user_choice before taking the input
    x = input("Choose :Charizard, Blastoise, or Venusaur: ")
    if "char" in x:
        user_choice = "Charizard"
    elif "blast" in x:
        user_choice = "Blastoise"
    elif "ven" in x:
        user_choice = "Venusaur"
    return user_choice


print(user_input()) # This prints the value of the object returned by the function

因为您没有保存从方法返回的内容

user_choice = user_input()
print(user_choice)

这样就行了

编辑

if x in "char"表示如果x为“char”的子字符串,则返回true。根据我的理解,你想说如果x正好等于“char”,那么user_choice = "Charizard"那么代码如下:

def user_input():
     x = input("Choose :Charizard, Blastoise, or Venusaur: ")
     if x == "char":
        user_choice = "Charizard"
     elif == in "blast":
        user_choice = "Blastoise"
     elif == in "ven":
        user_choice = "Venusaur"
    return user_choice

user_choice = user_input()
print(user_choice)

sample

相关问题 更多 >