调用我在def-Python 3.x中定义的变量时的NameError

时间:2016-04-26 07:51:15

标签: python python-3.x

此代码旨在允许用户输入名称 - 但如果他们输入了数字,那么它将显示错误('No numbers please!')并提示他们再次输入他们的名字。此过程将循环继续,直到用户输入不带数字字符的字符串。

但是,如果用户输入纯字母字符串 -

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

然后循环将被破坏,输入的结果将变为一个列表,供以后在程序中使用。 以下是错误的来源: 当循环中断时,我收到此错误:

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

如下所示,我已经将变量名定义为naming()定义中输入的结果。我究竟做错了什么?谢谢你的帮助!

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

1 个答案:

答案 0 :(得分: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(" "))