我有一些代码我搞砸了..对于python和编码来说非常新,但是我对这个很难。
我定义了一个函数,并从中获得了一些用户输入。当我尝试打印输入时,我得到一个NameError:name' my_name'没有定义。
这是代码..
#New Program
#Written by Chris Nelson of Cnelson Creations
#This code obtains some basic information from the user
def questions():
if userinput == "Y":
my_name = input("What is your name? ")`enter code here`
my_age = input("What is your age? ")
my_urname = input("Please pick a username.. ")
my_psword = input("Please pick a password.. ")
elif userinput == "N":
print ("Sorry we need the information to continue..")
print ("... Goodbye")
exit()
else:
print ("Not a valid choice.. Goodbye!")
exit()
print ("We need to obtain some information from you before going forward")
print ("Is this ok? Enter Y for 'yes' or N for 'No'...")
userinput = input("Please enter Y or N ")
questions() #This code runs the function listed above..
print ("Great we have some information from you!")
print ("Lets confirm it is the correct information.. ")
print ('{}, {}, {}, {}, is this information correct?'.format(my_name, my_age, my_urname, my_psword))
答案 0 :(得分:2)
您在函数内定义my_name
将进入本地范围。查看Short Description of the Scoping Rules?的这个问题。您有多种方法可以纠正此问题
对于my_name
以及函数中定义的其他变量可见,您必须在函数外定义它们。
或者在函数中添加全局声明
global my_name,my_age,my_urname,my_psword
或者使用着名的元组打包和序列解包
在函数
中的if
条件结尾处发表声明
return (my_name,my_age,my_urname,my_psword)
并且函数调用中有my_name,my_age,my_urname,my_psword = questions()
。
或者在函数本身中打印值,就像你自己建议的那样
答案 1 :(得分:0)
因为你试图在函数外部打印my_name
。当你在函数内部对它进行定义时它就在本地(范围)命名空间中(函数内部的变量具有局部范围(意味着你无法在函数外部和另一个范围内访问它们) )!如果要在函数外部访问它,则需要将其定义为global
。通过在函数的顶层添加global my_name
,同样如果您想要访问其他变量,则需要执行my_name
之类的操作。
但是你可以在你的函数中返回那些变量:
def questions():
if userinput == "Y":
my_name = input("What is your name? ")`enter code here`
my_age = input("What is your age? ")
my_urname = input("Please pick a username.. ")
my_psword = input("Please pick a password.. ")
elif userinput == "N":
print ("Sorry we need the information to continue..")
print ("... Goodbye")
exit()
else:
print ("Not a valid choice.. Goodbye!")
exit()
return (my_name,my_age,my_urname,my_psword)
在函数外部,您可以执行以下任务:
my_name, my_age, my_urname, my_psword= questions()
答案 2 :(得分:-3)
添加全局my_name,my_age,my_urname,my_psword
def questions():
global my_name,my_age,my_urname,my_psword
if userinput == "Y":
my_name = input("What is your name? ")`enter code here`
my_age = input("What is your age? ")
my_urname = input("Please pick a username.. ")
my_psword = input("Please pick a password.. ")
所以你也可以在函数之外使用那些变量。