使用While计算数字的各位之和

0 投票
3 回答
1152 浏览
提问于 2025-04-27 23:20

我该如何计算一个函数中给出的数字的总和呢?比如这样: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 的回答。你可以用“数学”的方法做到这一点)

撰写回答