使用While计算数字的各位之和
我该如何计算一个函数中给出的数字的总和呢?比如这样:def sum (123)
我想让Python通过循环把123加起来,得到6。
def calc_soma(num):
ns = str(num)
soma = 0
while soma < len(ns):
soma = eval(ns[soma])
soma = soma + 1
return soma
我试过这样做,但不管用。我刚开始学Python,所以我还不太懂很多东西。
3 个回答
0
基本上,你可以用 mod
来处理它:
>>> total = 0
>>> num = 123
>>> while num > 0:
... total += num % 10
... num /= 10
...
...
>>> total
6
你可以使用 str
,但那样会比较慢。
6
为什么要把它转换成字符串,明明可以直接从整数中获取每个数字呢?
while num > 0:
soma += num%10
num /= 10
0
你正在用 soma
来同时保存索引和结果。这里有一个修改过的版本:
>>> def calc_soma(num):
... ns = str(num)
... soma = 0
... indic = 0
... while indic < len(ns):
... soma += int(ns[indic])
... indic = indic + 1
... return soma
...
>>> calc_soma(123)
6
>>> calc_soma(1048)
13
如果你想遍历 str
,可以使用列表推导式:
>>> sum([int(i) for i in str(123)])
6
>>> sum([int(i) for i in str(2048)])
14
你也可以去掉 [/]
:
sum(int(i) for i in str(123))
(另外,可以看看 barak manos 的回答。你可以用“数学”的方法做到这一点)