数字中的数字总和

Sum of digits in a number

这个函数应该return一个数字中所有数字的总和。

def sum_digits(num):
    if int(num) <= 0:
        return 0
    else:
        sum = 0
        while int(num) != 0:
            n = int(num) % 10
            num = int(num) / 10
            sum = int(sum + n)
        return sum 

它适用于较小的数字,但如果我输入例如数字 99999999999999999999999999999999,它 return 是 74 而不是 297。

感谢帮助

您需要用 (//) 而不是 (/) 进行除法,因为那样会 return 一个浮点数。 你需要做这样的事情:

def sum_digits(num):
    num = int(num)
    if num <= 0:
        return 0
    else:
        sum = 0
        while num != 0:
            n = num % 10
            num //= 10
            sum +=  n
        return sum

(为了提高可读性,我对您的代码进行了一些修改。)

编辑:拼写错误已修复

我处理你的问题有点不同

number = 999999999999999999999999999999999
    number = str(number)
    sum = 0
    for digit in number:
        digit = int(digit)
        sum = digit+sum
    print(sum)