我说我有
num = 123456
如何获得21的数字和?如何使用sum()函数?我尝试了sum(num),但它说'int'对象不可迭代。
答案 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