2016-04-26 24 views
0

此代码旨在允许用户输入名称 - 但是如果他们输入数字,则会显示错误('请不要数字!')并提示他们再次输入他们的名字。这个过程将继续循环,直到用户输入一个没有数字字符的字符串。NameError当调用我在def中定义的变量时--Python 3.x

然而,如果用户输入一个字母纯与字符串

if not any(char.isdigit() for char in name): 
    break 

然后,环路将被打破和输入的结果将在以后的程序变成一个列表以供使用。 这里就是错误出现在: 当环路坏了,我得到这个错误:

namelist = list(name.lower().strip(" ")) 
NameError: name 'name' is not defined 

正如你可以看到下面,我已经定义的变量名中输入的结果命名()定义。我究竟做错了什么?谢谢您的帮助!

def naming(): 
name = input ("please input your name: ") 
while any(char.isdigit() for char in name): 
    print ("\nNo numbers please!\n") 
    naming() 

    if not any(char.isdigit() for char in name): 
     break 


naming() 


#making the name into a list 
namelist = list(name.lower().strip(" ")) 
+0

名称是局部的功能*。如果你需要在外面访问它,则返回并分配它。 – jonrsharpe

+1

您的缩进不正确,请在您的问题中再次查看。 –

回答

1

name有它的范围仅限于功能,这就是为什么你不能访问它在全球范围内为namelist。要解决这个

一种方法是从你的函数返回值:*的函数中定义

def get_name(): 
    name = input ("please input your name: ") 
    while any(char.isdigit() for char in name): 
     print ("\nNo numbers please!\n") 
     name = input ("please input your name: ") 
    return name 

name = get_name() 
namelist = list(name.lower().strip(" ")) 
+0

谢谢你的回答 - 它的工作原理! – Caleb

相关问题