为什么python打印正确的值却返回None?

时间:2019-03-10 16:53:38

标签: python python-3.x python-2.7

我实现了一个功能,可以将数字的位数相加直到达到一位数字。它返回None,但打印正确答案。

def single_sum(n):
    print "calling function for",n
    if(n<10):
        print n
        return n
    else:
        t=0
        for i in str(n):
            t=t+int(i)
        single_sum(t)

print single_sum(12345)

我得到的输出是:

calling function for 12345
calling function for 15
calling function for 6
6
None

2 个答案:

答案 0 :(得分:2)

您的函数没有返回递归调用,而只是返回它:

def single_sum(n):
    print "calling function for",n
    if(n<10):
        print n # << unnecessary print
        return n
    else:
        t=0
        for i in str(n):
            t=t+int(i)
        return single_sum(t) # << return the call

print single_sum(12345)

答案 1 :(得分:1)

        single_sum(t)

--->

        return single_sum(t)

在大多数情况下,您不会从函数中返回任何内容。