В рамках онлайн-упражнения я хочу написать функцию, постоянство, которая принимает положительный параметр num и возвращает его мультипликативную стойкость, то есть количество раз, которое вы должны умножить цифры в num, пока не достигнете одиночный ди git. Например:
постоянство (39) => 3 # Потому что 3 * 9 = 27, 2 * 7 = 14, 1 * 4 = 4 # и 4 имеет только один di git.
настойчивость (999) => 4 # Потому что 9 * 9 * 9 = 729, 7 * 2 * 9 = 126, # 1 * 2 * 6 = 12 и, наконец, 1 * 2 = 2.
persistence (4) => 0 # Поскольку 4 уже является числом с одним ди git.
Это мой код:
def persistence(n):
count=0
if n<10:
return(count)
else:
count+=1
a=([int(d) for d in str(n)])
result = 1
for i in a:
result=result*i
if result<10:
return(count)
else:
count+=1
a=([int(d) for d in str(result)])
result1 = 1
for i in a:
result1=result1*i
if result1<10:
return(count)
else:
count+=1
a=([int(d) for d in str(result1)])
result2=1
for i in a:
result2=result2*i
if result2<10:
return(count)
else:
count+=1
a=([int(d) for d in str(result1)])
result3=1
for i in a:
result3=result3*i
if result3<10:
return(count)
но когда я пробую n = 999, он дает мне 2, что неверно. Также он ограничен всего 4 мультипликативной персистентностью. Как я могу улучшить этот код. Tnx заранее!