Python汇总数字,'n'

时间:2016-12-18 15:42:40

标签: python sum int iteration

我是一名新手程序员,偶然发现了使用python的codecademy中的一个问题。 我得到一个随机的正整数,n,需要隔离数字以将它们加在一起并将总和加到变量中,总计

到目前为止,这是我的代码,请记住我是新手!:)

def digit_sum(n):
    total = 0
    while len(str(n)) > 0:
        total = total + n%10
        n -= n//10

3 个答案:

答案 0 :(得分:1)

您的代码中有三个问题:

  • 该函数不返回值。最后添加return total
  • 你不应该在len(str(n)) > 0期间继续,因为这将永远是真的:任何转换为​​字符串的数字都至少有一个字符。相反,只需验证n > 0
  • 即可
  • n不应通过减法进行调整,而应通过除法进行调整:n //= 10

所以这是更正后的代码:

def digit_sum(n):
    total = 0
    while n > 0:
        total = total + n%10
        n //= 10
    return total

不是问题,但您可以total = total + n%10

缩短total += n%10

答案 1 :(得分:0)

每次迭代都应该处理一个数字。最简单的方法是在每次迭代中将其除以10:

def digit_sum(n):
    total = 0
    while n > 0:
        total += (n % 10)
        n //= 10
    return total

答案 2 :(得分:0)

所以,这里的问题是你的循环没有终止(我可以很容易地在这里弄明白,但一般情况下,请在你的问题中告诉我们问题是什么)。

让我们尝试使用print打印它:

def digit_sum(n):
    total = 0
    while len(str(n)) > 0:
        print(n)
        total = total + n%10
        n -= n//10

当我用一些参数调用它时,我无限期地在我的控制台中获得了很多9。这是因为9//100,因为它会截断分割的结果。

实际上,您尝试使用的数学运算不正确。您不希望将n的十分之一减去n,因为这会给您九分之一n。 你想要的是占n的十分之一。

所以,请执行此操作:n = n//10而不是:n -= n//10