我是一名新手程序员,偶然发现了使用python的codecademy中的一个问题。 我得到一个随机的正整数,n,需要隔离数字以将它们加在一起并将总和加到变量中,总计
到目前为止,这是我的代码,请记住我是新手!:)
def digit_sum(n):
total = 0
while len(str(n)) > 0:
total = total + n%10
n -= n//10
答案 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//10
是0
,因为它会截断分割的结果。
实际上,您尝试使用的数学运算不正确。您不希望将n
的十分之一减去n
,因为这会给您九分之一n
。
你想要的是占n
的十分之一。
所以,请执行此操作:n = n//10
而不是:n -= n//10