重复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的答案解决了真正的问题。