Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何替换函数中if语句中的变量? print'欢迎来到Pig拉丁语翻译器!' def pyg(): 如果name.isalpha和len(name)>0: 打印 elif name.isdigit: 打印“这是一个整数,不是字符串!” 名称=原始输入() pyg() elif len(name)_Python_Python 2.7 - Fatal编程技术网

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的答案。全局变量通常会产生您没有意识到的副作用,例如,如果在函数调用之间有其他内容正在修改变量。