我想创建一个函数,它可以将正整数n作为输入,并返回所有该数字的总和。
以下是我的代码:
def digit_sum(n):
string = str(n)
for number in string:
num = int(number)
total = 0
total += num
return total
但错误信息是: 您的函数在digit_sum上失败(434)。当它应该返回11时返回4.
据我所知,for循环没有成功循环。它只循环一次然后返回值。
我的问题是:
我的代码出了什么问题?
我需要先将数字转换为字符串的原因是整数不能迭代?
希望有人能帮助我。 谢谢!
答案 0 :(得分:2)
问题是你在循环中设置总数等于零。这意味着每次通过它都会采用最新的值o + num,在该字符串的最后一位是4。相反,试试这个:
def digit_sum(n):
string = str(n)
total = 0
for number in string:
num = int(number)
total += num
return total
答案 1 :(得分:0)
问题在于,每次循环迭代时,您都会将total
的值重置回0
。将初始化移动到循环上方,如此
def digit_sum(n):
string = str(n)
total = 0
for number in string:
num = int(number)
total += num
return total
答案 2 :(得分:0)
您正在重复total
每次迭代。将total = 0
移到for循环之外。