将列表中的所有整数相乘,直到达到一个整数

2024-06-01 14:58:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将列表中的所有元素相乘,直到得到一个整数

x=1234为1x2xx4=24,然后2x4=8

我尝试了numpy.prod,但由于某些原因,它只运行了一次

这是我的密码:

import numpy as np
def persistence(p):

    numbers = list(map(int, list(p)))
    multiply = [np.prod(np.array(numbers))]

    return multiply

number = input("Enter persistence number: ")
x = persistence(number)
z = persistence(x)
print(x)
print(z)

Tags: importnumpy元素密码number列表np原因
3条回答

这可以通过基本python实现

导入numpy实际上会增加运行时间

尝试使用此功能:

def persistance(n):
    while(len(n)>1):
        x=1
        for i in range(len(n)):
            x*=int(n[i])
        n=str(x)
    return n
n=input()
fin=persistance(n)
print(fin)

希望有帮助:“)

这是一个很好的问题来介绍递归世界中的人。下面是递归解决方案的外观:

def rec_prod(n):
  s = str(n)
  while len(s) != 1:
    n = 1
    for i in s:
      n *= int(i)
    return rec_prod(n)
  return n


res = rec_prod(1234)
print(res)  # -> 8

我有一个稍微不同的实现:

def f(x):
    r = 1
    for n in x:
        r *= int(n)
    if r > 9: #double digit
        return f(str(r))
    return r

f('1234') #8

相关问题 更多 >