编写一个函数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')