Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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函数并返回值_Python - Fatal编程技术网

重复python函数并返回值

重复python函数并返回值,python,Python,我试图让一个函数在不满足某个条件的情况下重复自身。例如: def test(): print "Hello", x = raw_input() if x in '0123456789': return x test() 在本程序中,如果您第一次键入一个数字,它将返回该数字。如果您键入一些非数字,它将根据需要重复自身。但是,如果先键入一些非数字,然后键入一个数字,则不会返回任何结果。为什么会是这种情况?您需要在函数末尾返回test(),以返回对te

我试图让一个函数在不满足某个条件的情况下重复自身。例如:

def test():
    print "Hello",
    x = raw_input()
    if x in '0123456789':
        return x
    test()

在本程序中,如果您第一次键入一个数字,它将返回该数字。如果您键入一些非数字,它将根据需要重复自身。但是,如果先键入一些非数字,然后键入一个数字,则不会返回任何结果。为什么会是这种情况?

您需要在函数末尾返回test(),以返回对test()的有效调用返回的值。

您调用test本身的方式是错误的。每次程序重新启动函数时,都会使用另一个级别的堆栈。最终,即使用户从未输入其中一个字符,程序也会停止(崩溃)

def test():
    while True:
        print "Hello",
        x = raw_input()
        if x in '0123456789':
            return x

如果将
test()
替换为
return test()
,应该可以使用。如果要在获得有效输入之前重复提示,我建议使用while循环,而不是递归。每次输入无效时,都会在堆栈上推送另一帧。对你所做的可能没什么大不了的,但是保持整洁也没什么坏处。@cjm,如果你所做的是“学习编程”,那就是大不了的。但如果你能从错误中吸取教训,那么错误可能是一件好事。你知道你是对的,你知道你发布的代码根本不好玩。:-)但是,代码将按照o.p.设想的方式工作——为此目的,@mikecorcoran的答案解决了真正的问题。