-2

仅返回有效条目的函数。

代码:

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”,对于函数调用者来说,这将是“否”?

干杯

4

2 回答 2

3

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

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

至:

else:
    print('Error!')
    x = test()
return x
于 2012-08-24T05:40:34.693 回答
2

这将使用循环更直接地编写,并且如果用户犯了超过 1000 个错误,则作为奖励不会失败,但是既然您要问:您的递归调用test()正在丢弃递归调用的返回值。你应该这样做x = test()

于 2012-08-24T05:42:05.207 回答