2016-02-24 16 views
0

我對代碼有些問題。我必須找到一個數的加法和乘法持續性。到目前爲止,我可以找到持久只是一個時間,但它必須不斷循環,以便回答爲小於9 下面是結果:python中的加法和乘法持久性

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() 

回答

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) 

你可以op是要麼operator.addoperator.mul稱之爲:

>>> persistence(1234, operator.add) 
1 
>>> persistence(1234, operator.mul) 
8