2016-09-24 133 views
1

我的代碼:如何總結兩個數字在列表

creditcardnumber = input("Enter Here:") 

def luhn(creditcardnumber): 
    k = list((creditcardnumber)) 
    odd = [int(k[i]) for i in range(1, len(k),2)][::-1] 
    doubled = [2*d for d in odd] 
    print(doubled) 


print(luhn(creditcardnumber)) 

它西港島線打印出類似這樣:

[12, 10, 8, 6, 4, 2, 2, 16, 12, 8, 4] 

我來總結TE輸出。但是當一個數值超過兩位數時,我必須爲上面的例子做:(1 + 2)+(1 + 0)+ 8 + 6 + 4 + 2 + 2 +(1 + 6)等

任何人都可以幫我嗎?

+0

http://stackoverflow.com/questions/29197219/credit-card-number-validator-doesnt-work-correctly/29197921#29197921 –

+1

@PadraicCunningham謝謝 – jozofe

回答

0

您可以先計算出的數字總和再總結得出的值(因爲數字總和永遠是個位數。x//10 + x%10將計算數字和兩位數字的值。所以,如果doubled是包含值列表[12, 10, 6,...]

sum([x//10 + x%10 for x in doubled])