说我的输入是39
- 我想正确地遍历这个数字的部分直到最终产品是一个数字(3 * 9 = 27,2 * 7 = 14,1 * 4 = 4 ),并作为输出返回乘以的次数,在本例中为3.
我对循环的基本理解让我进入了第1步,我已经设法使用上面的示例返回27
。
def times_multiplied(n):
total = 1
for i in map(int, str(n)):
total *= i
return total
另一个我想减少数量的想法,还没有找到计数,就是添加额外的for循环,但我的直觉说这是太多的代码。我确信Python提供了一个更简单,更优雅的解决方案......
最后,当然,是捕捉倍数的方法,我的直觉也说可能与Counter有关......我不是正面的。
请帮忙!
答案 0 :(得分:2)
您应该将times_multiplied
重命名为multiply_digits
,因为它就是这样做的。然后通过循环创建真实times_multiplied
,直到结果小于10。如果我能记住我的python,这是一个可能的解决方案:
def multiply_digits(n):
total = 1
for i in map(int, str(n)):
total *= i
return total
def times_multiplied(n):
count = 0
result = n
while result >= 10:
count += 1
result = multiply_digits(result)
return count
在单一功能中:
def times_multiplied(n):
count = 0
result = n
while result >= 10:
count += 1
total = 1
for i in map(int, str(result)):
total *= i
result = total
return count