如何在python中获得数字总和

时间:2013-04-28 18:18:38

标签: python

我说我有

num = 123456

如何获得21的数字和?如何使用sum()函数?我尝试了sum(num),但它说'int'对象不可迭代。

4 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分:3)

你可以这样做:

sum(map(int,list(str(num))))(sum包含您的数字字符串)

str(num)返回您的数字的字符串版本,list(...)从您的字符串中生成一个列表(char by char),map(int,string)将整数强制转换为您的列表。现在,您的列表包含您的数字的所有单个整数,因此您可以使用sum()函数。

答案 3 :(得分: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