重复执行Python函数并返回值

4

我正在尝试使一个函数在某些条件不满足时重复执行。例如:

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

在这个程序中,如果你第一次输入一个数字,它会返回这个数字。如果你输入了一些非数字字符,它将按照你的期望重复输出。然而,如果你先输入了一些非数字字符,然后再输入数字,它将不会返回任何内容。为什么会出现这种情况呢?

2
如果你将 test() 替换为 return test(),它应该可以正常工作。 - Holger
1
如果您想重复提示直到获得有效输入,我建议使用while循环而不是递归。每次输入无效时,都会在堆栈上推送另一个帧。对于您正在进行的操作可能并不是什么大问题,但保持整洁也无妨。 - cjm
@cjm,如果你正在“学习编程”,那么这是一件大事。但是,如果你能从错误中吸取教训,那么错误也可以成为一件好事。 - John La Rooy
2个回答

8

在函数的尾部使用return test()来返回有效调用test()所返回的值。


4

您目前进行测试调用的方式是错误的。每次程序重新启动函数时,都会使用另一个堆栈级别。最终,即使用户从未输入这些字符,程序也会停止(崩溃)。

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

你知道你是正确的,也知道你发布的代码并不好玩。:-) 但是,这段代码将按照原始问题的设想正常工作 - @mikecorcoran的答案已经解决了真正的问题。 - jsbueno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接