非类型函数应该是一个整数(Python)

时间:2018-04-15 10:34:36

标签: python function integer typeerror nonetype

a=0

def r(x):
    global a

    if len(str(x))==1:
        print(a)
        b=int(a)
        a=0
        return b
    else:
        a+=1
        print(a)
        r(reduce(lambda z, y: int(z)*int(y), list(str(x))))

def persistence(n):

    if len(str(n))==1:
        return 0
    else:
        return r(n)

(这是对codewars.com的挑战)

为什么类型(r(n))== NoneType? 变量b是一个整数,为什么不是函数整数的类型呢?

1 个答案:

答案 0 :(得分:1)

我相信你的问题是你没有从else案例中的函数返回值。所以你应该添加return关键字,如下所示:

a=0

def r(x):
    global a

    if len(str(x))==1:
        print(a)
        b=int(a)
        a=0
        return b
    else:
        a+=1
        print(a)
        return r(reduce(lambda z, y: int(z)*int(y), list(str(x))))

def persistence(n):

    if len(str(n))==1:
        return 0
    else:
        return r(n)