[算法和数据结构入门][Day5]数字相乘的次数(获取多位数字的乘法持久性)

编写一个函数persistence,它接受一个正参数num并返回它需要相乘的次数,这里需要将num中的数字相乘直到得到一个数字的次数。
比如输入39,结果为3,因为 39 = 27, 27 = 14, 1*4=4,一共相乘了3次
在这里插入图片描述
法一:

def persistence(n):
    count = 0
    n_str = str(n)
    while len(n_str) > 1:
        n_new = 1
        for i in n_str:
            n_new *= int(i)
        n_str = str(n_new)
        count += 1
    return print(count)

在这里插入图片描述
法二:

from functools import reduce
def persistence(n):
    count = 0
    while n >= 10:
        n = reduce(lambda x,y:x*y,[int(i) for i in str(n)])
        count += 1
    return print(count)

在这里插入图片描述
法三:

from functools import reduce
def persistence(n):
    count = 0
    while n >= 10:
        n = reduce(lambda x,y:x*y,list(map(int,str(n))))
        count += 1
    return print(count)
persistence(39)
persistence(999)
persistence(4)
persistence(25)

在这里插入图片描述
法四:

from functools import reduce
import operator as op

def mul_by_char(num):return reduce(op.mul,map(int,str(num)))

def persistence(num):
    return 0 if len(str(num)) == 1 else 1+ persistence(mul_by_char(num))

assert persistence(4) == 0
assert persistence(39) == 3
assert persistence(999) == 4
assert persistence(25) == 2

print('test is done')

在这里插入图片描述

更多内容请点击https://www.jianshu.com/p/27503826d1b3

发布了42 篇原创文章 · 获赞 28 · 访问量 4961

猜你喜欢

转载自blog.csdn.net/KaelCui/article/details/105358905