我如何修改代码以实现输出“ 12333”?现在输出NONE

时间:2019-02-26 09:27:02

标签: python python-3.x

a=0

def test():
    global a
    a=a+1
    if a==10:
        return 12333
    else:
        print(a)
        test()

print(test())

以上是我的代码。 enter image description here

2 个答案:

答案 0 :(得分:1)

之所以当前不起作用,是因为当前没有任何内容返回到原始打印对帐单。

您的print(test())调用将使a递增print(a),然后再次调用自身,这是您获得递归的结果,但是原始函数调用没有返回任何内容。

只需在函数内的函数调用中添加return即可解决此问题,

a=0

def test():
    global a
    a=a+1
    if a==10:
        return 12333
    else:
        print(a)
        return test()

print(test())

与Java相比,这是Python的简单语言不足之处,因为它不会告诉您某些错误,而Java和其他语言会告诉您缺少return语句。

Even more in depth information can be found here

答案 1 :(得分:0)

您应该使函数test也返回递归调用的返回值;否则它将隐式返回None,而无需显式的return语句。

更改:

test()

收件人:

return test()