假设我有
num = 123456
我如何获得21的数字总和?如何使用 sum() 函数?我试过 sum(num) 但它说'int'对象不可迭代。
您必须先将其更改为字符串:
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
单程:
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
你可以这样做:
sum(map(int,list(str(num)))) #sum contains your digits string
str(num) 返回您的数字的字符串版本, list(...) 从您的字符串中创建一个列表(char by char), map(int,string) 将整数转换应用于您的列表。现在您的列表包括您的数字的所有单个整数,因此您可以使用 sum() 函数。
这个怎么样:
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