此代码旨在允许用户输入名称 - 但如果他们输入了数字,那么它将显示错误('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(" "))
答案 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(" "))