python中的加法和乘法持久性

问题描述 投票:0回答:3

我的代码遇到了一些麻烦。我必须找到数字的加法和乘积余辉。到目前为止,我只能一次找到持久性,但是它必须不断循环以使答案小于9。结果如下:

type a number thats greater than 9: 1234
additive persistence result:  10
multiplicative persistence result:  240
Press enter to exit

但是,这是错误的,因为它应该分解为10和240。应该做1 + 0 = 1和2 * 4 * 0 = 0。我知道我可能需要一个while循环来执行此操作,只是我不知道该怎么做。这是给我的CS课的,甚至我的老师真的不知道该怎么做。这是我的代码:

a=raw_input("type a number thats greater than 9: ")

sum_1=0

for element in a:
    sum_1+=int(element)
print "additive persistence result: ",sum_1


for element in a:
    sum_1*=int(element)
print "multiplicative persistence result: ",sum_1
print"Press enter to exit"
raw_input()
python math persistence
3个回答
2
投票

我会让您开始第一个:

while len(a) > 1:
    sum_1 = 0
    for element in a:
        sum_1+=int(element)
    a = str(sum_1)

0
投票

这是reduce()功能的好用例:

def persistence(num, op):
    while True:
        digits = list(map(int, str(num)))
        if len(digits) == 1:
            return digits[0]
        num = reduce(op, digits)

您可以使用opoperator.add来调用它:

operator.mul

0
投票

您如何尝试这些代码:

>>> persistence(1234, operator.add)
1
>>> persistence(1234, operator.mul)
8
© www.soinside.com 2019 - 2024. All rights reserved.