Python 如何替换函数中if语句中的变量? print'欢迎来到Pig拉丁语翻译器!' def pyg(): 如果name.isalpha和len(name)>0: 打印 elif name.isdigit: 打印“这是一个整数,不是字符串!” 名称=原始输入() pyg() elif len(name)
为什么不将Python 如何替换函数中if语句中的变量? print'欢迎来到Pig拉丁语翻译器!' def pyg(): 如果name.isalpha和len(name)>0: 打印 elif name.isdigit: 打印“这是一个整数,不是字符串!” 名称=原始输入() pyg() elif len(name),python,python-2.7,Python,Python 2.7,为什么不将name作为参数传递给函数,并使函数接受该参数 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()
name
作为参数传递给函数,并使函数接受该参数
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()
顺便说一句,代码在isalpha
,isdigit
之后丢失。
长度永远不会变成负数
len(name)<0
没有意义。为什么不将name
作为参数传递给函数,并使函数接受该参数
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()
顺便说一句,代码在isalpha
,isdigit
之后丢失。
长度永远不会变成负数len(name)<0
没有意义。这是一个问题。Python采用了一种与大多数语言不同的语言。如果您只读取变量,它将使用全局版本。但是,如果您尝试设置它,它将使用本地版本
python解释器看到您正在底部设置name=raw\u input()
,并在整个函数中使用本地版本。由于第一次没有初始化本地文件,因此会出现错误。因此,要修复它,您只需强制python使用全局函数,如下所示:
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)
当然,其他人给你的建议是更好的实践,也是你应该使用的。这是一个问题。Python采用了一种与大多数语言不同的语言。如果您只读取变量,它将使用全局版本。但是,如果您尝试设置它,它将使用本地版本
python解释器看到您正在底部设置name=raw\u input()
,并在整个函数中使用本地版本。由于第一次没有初始化本地文件,因此会出现错误。因此,要修复它,您只需强制python使用全局函数,如下所示:
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)
当然,其他人给你的建议是更好的实践,也是你应该使用的。谢谢,现在我的代码可以工作了,但我仍然不明白什么时候我应该很少使用“global”@ch3wbac4,如果有的话。通常有一个比
global
更好的解决方案,看看我和falsethu的答案。例如,如果在函数调用之间修改变量,全局变量通常会产生您没有意识到的副作用。谢谢,现在我的代码可以工作了,但我仍然不明白什么时候应该很少使用“Global”@ch3wbac4(如果有的话)。通常有一个比global
更好的解决方案,看看我和falsethu的答案。全局变量通常会产生您没有意识到的副作用,例如,如果在函数调用之间有其他内容正在修改变量。