返回值无?

时间:2019-07-04 02:49:07

标签: python

我正在尝试使用以下规范解决CodeWars上的问题:

“编写一个持久性函数,该函数接受一个正数num并返回其乘性持久性,这是必须将num中的数字相乘直到达到一位为止的次数。”

我的解决方法如下:

def persistence(n,count = 0):
    n = list(str(n))
    if len(n)  <= 1 :
        count = 0
        return count
    else :
        num_per = 1
        for i in n :
            num_per = num_per * int(i)
        num_dump = num_per
        if len(str(num_dump)) > 1:
            count += 1
            n = num_per
            persistence(n,count)
        else:
            count = count + 1
            return count

当我选择一个多于一个数字的数字时,我得到的返回值为“无”。我将问题缩小到第二个else子句中的最后一个return语句。计数数量已正确计算,但return语句仍返回值'None'。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

只需在您的坚持行之前添加收益:

recyclerview

答案 1 :(得分:0)

与@jasonharper的建议不同,您的函数具有 if / else 语句,该语句由 len(n)<= 1 决定。如果 n 的长度小于1,则返回 count (为0)。

但是,在您的 else 语句中,您还有另一个 if / else 语句。在由 len(str(num_dump))> 1 决定的 if 语句中,您决定递归调用同一函数,但是不返回任何值。因此,您的程序很可能会进行很多递归调用,但是无法存储要在程序末尾返回的值。

这可以通过替换

来解决
  

持久性(n,计数)

使用

  

返回持久性(n,计数)