2013-04-28 114 views
3

讓說,我有如何獲得數字和在python

num = 123456 

我如何獲得的數字和是21?如何使用sum()函數?我嘗試sum(num),但它說'int'對象是不可迭代的。

+0

你是指數字總和? http://en.wikipedia.org/wiki/Digit_sum如果是的話,請將其添加到標題中,否則,仇恨者將會使您不滿意,否則... – MentholBonbon 2013-04-28 18:22:53

+0

總和適用於像列表這樣的可迭代對象。字符串也恰好是可迭代的(有點像字符列表)。一個數字只是一件事。如果你想總結一個不同數字的列表,你會希望'num'是''[1,2,3,4,5,6]'這是你想加總的數字列表。 – underrun 2013-04-28 18:25:07

+0

@MentohlBonbon是的,這就是我的意思。謝謝! – 2013-04-28 18:25:53

回答

7

方式一:

In [1]: num=123456 

In [2]: sum(map(int,str(num))) 
Out[2]: 21 

In [3]: def digitsum(x): 
    ...:  return sum(map(int,str(x))) 
    ...: 

In [4]: digitsum(num) 
Out[4]: 21 
13

你必須首先改變爲一個字符串:

In [24]: num = 123456 

In [25]: sum(int(x) for x in str(num)) 
Out[25]: 21 

沒有轉換成字符串:

def solve(n): 
    summ=0 
    while n: 
     summ+= n%10 
     n/=10 
    return summ 
    ....: 

In [38]: solve(123456) 
Out[38]: 21 
1

如何:

def f(num): 
    result = 0 
    base = 10 
    pos = 10 
    while pos <= num*base: 
    prev = pos/base 
    result = result + int((num % pos)/ prev) 
    pos = pos*base 
    return result 
3

,你可以做這樣的:

總和(圖(INT,列表(STR(NUM))))(總和包含您的數字串)

STR(NUM)返回一個字符串版本你的數字,列表(...)列出你的字符串(char by char),map(int,string)將一個整數轉換爲你的列表。現在你的列表包含你的號碼的所有單個整數,所以你可以使用你的sum()函數。