python中的乘法持久性

python中的乘法持久性,python,Python,我需要代码方面的帮助。它应该乘以我作为输入提供的数字中的数字。这不起作用,因为每次我运行程序时,我得到的都是: multiplicative persistence result: 0 multiplicative persistence result: 0 multiplicative persistence result: 0 multiplicative persistence result: 0 这只是不断循环 second = str(raw_input("what numb

我需要代码方面的帮助。它应该乘以我作为输入提供的数字中的数字。这不起作用,因为每次我运行程序时,我得到的都是:

multiplicative persistence result:  0
multiplicative persistence result:  0
multiplicative persistence result:  0
multiplicative persistence result:  0
这只是不断循环

second = str(raw_input("what number do you want to apply the multiplicative persistence to? "))
while len(second)>1:
    ans=0
    for num in second:
        ans=ans * int(num)
    b=str(ans)
    print "multiplicative persistence result: ",b
raw_input()

你没有减少len(秒),所以它当然永远不会存在

def solve_to_1(second):
    answ = 1
    for num in second:
        answ *= int(num)
    print "Intermediate:",answ
    if answ >= 10: #still to big recursively call it
        return solve_to_1(str(answ))
    return answ

result = solve_to_1("1234123")
print "FINAL:",result

你没有减少len(秒),所以它当然永远不会存在

def solve_to_1(second):
    answ = 1
    for num in second:
        answ *= int(num)
    print "Intermediate:",answ
    if answ >= 10: #still to big recursively call it
        return solve_to_1(str(answ))
    return answ

result = solve_to_1("1234123")
print "FINAL:",result

while循环总是返回true,因此循环会继续进行。 而只是遍历正在解包的字符串

for num in second:
    ...

while循环总是返回true,因此循环会继续进行。 而只是遍历正在解包的字符串

for num in second:
    ...

您设置的循环是无限的。为了使用while循环,您需要修改它使用的条件,在本例中,设置的循环是无限的。为了使用while循环,您需要修改它使用的条件,在本例中,
len(second)

我有一个简单的工作条件

def per(n,steps=0):
    if len (str(n))==1:
        print(n)
        print "TOTAL STEPS" + str(steps)
        return "DONE"
steps += 1
digits = [int(i)for i in str(n)]
result = 1
for j in digits:
    result *= j
print(result)
per(result,steps)
per(2777777888899)

这是一个基本的手动编辑输入功能。该函数只是有一种输入,因为代码本身“不需要”一种更复杂且随时可用的方法,因为它是实时编辑的,如视频所示。实际计算过程发生在

steps += 1
digits = [int(i)for i in str(n)]
result = 1
for j in digits:
    result *= j
不要依赖于代码的第一部分,因为实际的过程在第二部分

归功于NumberFile 录像带=====https://youtu.be/Wim9WJeDTHQ
频道===numberfile(在youtube上)

我有一个简单的工作模式

def per(n,steps=0):
    if len (str(n))==1:
        print(n)
        print "TOTAL STEPS" + str(steps)
        return "DONE"
steps += 1
digits = [int(i)for i in str(n)]
result = 1
for j in digits:
    result *= j
print(result)
per(result,steps)
per(2777777888899)

这是一个基本的手动编辑输入功能。该函数只是有一种输入,因为代码本身“不需要”一种更复杂且随时可用的方法,因为它是实时编辑的,如视频所示。实际计算过程发生在

steps += 1
digits = [int(i)for i in str(n)]
result = 1
for j in digits:
    result *= j
不要依赖于代码的第一部分,因为实际的过程在第二部分

归功于NumberFile 录像带=====https://youtu.be/Wim9WJeDTHQ
频道===numberfile(在youtube上)

这是一个计算数字持久性的简单程序:

number = int(input("enter number"))
product = 1
persistence = 0
print(number)
while number > 9:
    for digit in range(0, len(str(number))):
        product *= int(str(number)[digit])
    print(product)
    persistence += 1
    number = product
    product = 1
print("persistence:", persistence)

这是一个计算数字持久性的简单程序:

number = int(input("enter number"))
product = 1
persistence = 0
print(number)
while number > 9:
    for digit in range(0, len(str(number))):
        product *= int(str(number)[digit])
    print(product)
    persistence += 1
    number = product
    product = 1
print("persistence:", persistence)

我应该包括这个,但它必须继续循环,直到最终结果有一个数字。如果任何数字是零,你知道答案将是零吗?我应该包括这个,但它必须继续循环,直到最终结果有一个数字。如果任何数字为零,你知道答案将为零吗?你似乎混淆了乘法和加法。乘法恒等式是1,而不是0。您似乎混淆了乘法和加法。乘法恒等式是1,而不是0。