print 'Welcome to the Pig Latin Translator!'
def pyg():
if name.isalpha and len(name) > 0:
print
elif name.isdigit:
print "This is an integer, not a string!"
name = raw_input()
pyg()
elif len(name) <= 0:
print "You typed nothing!"
name = raw_input()
pyg()
name = raw_input()
pyg()
所以我收到了错误
UnboundLocalError:赋值前引用的局部变量'name'
我想要做的是当我的输入name
是一个整数时,我输入要替换name
的内容并再次运行该函数
答案 0 :(得分:5)
为什么不将name
作为参数传递给函数,并使函数接受参数?
print 'Welcome to the Pig Latin Translator!'
def pyg(name):
if name.isalpha() and len(name) > 0:
print
elif name.isdigit():
print "This is an integer, not a string!"
name = raw_input()
pyg()
elif len(name) == 0:
print "You typed nothing!"
name = raw_input()
pyg(name)
name = raw_input()
pyg(name)
顺便说一句,在()
,isalpha
之后,代码遗失isdigit
。
并且长度永远不会变成负数。 len(name) < 0
没有意义。
答案 1 :(得分:0)
这是variable scoping的问题。 Python采用与大多数语言不同的approach to function scopes and conflicts。如果您只是读取变量,它将使用全局版本。但是,如果您尝试设置它,那么它将使用本地版本。
python解释器看到你在底部设置name = raw_input()
,并在整个函数中使用本地版本 。由于本地第一次没有初始化,因此会出错。所以要修复它,你只需要强制python使用全局的,使用这一行:
def pyg():
global name
. . .
当然,其他人给你的建议是更好的练习,也是你应该使用的。