递归函数仅返回有效条目

时间:2012-08-24 05:37:03

标签: python

只返回有效条目的函数。

代码:

def test():
    x = input('1' or '0')
    if x == '1'
        x = 'yes'
    elif x == '0'
        x = 'no'
    else:
        print('Error!')
        test()
    return x

x = test()
print(x)

如何确保返回x只返回有效条目(1或0)?

此时如果我输入1或0以外的数字,测试函数会调用自身,这将是返回的值,无论此后输入的输入是什么......

为什么会发生这种情况,如何纠正这个问题,因此只返回1为“是”或“0”,对函数调用者来说是“否”?

欢呼声

2 个答案:

答案 0 :(得分:3)

您没有在任何地方存储递归调用的结果。你需要改变:

else:
    print('Error!')
    test()
return x

为:

else:
    print('Error!')
    x = test()
return x

答案 1 :(得分:2)

使用循环可以更直接地编写,如果用户犯了1000多个错误,奖励也不会失败,但是因为你问:你对test()的递归调用正在消失递归调用的返回值。你应该x = test()