在Codecademy.com上我在第8节“练习完美”,练习4他们要求你:
编写一个名为 digit_sum 的函数,该函数采用正整数 n 作为输入并返回所有该数字的总和。例如: digit_sum(1234)应返回 10 ,即 1 + 2 + 3 + 4 。 (假使,假设 给你的数字总是积极的。)
def digit_sum(n):
total = 0
n = str(n)
for i in n:
total += int(n[i])
return total
由于你只需要添加一个数字,我写了一个程序,将数字改成一个字符串然后迭代每个数字。当我迭代时,我通过访问数字然后将数字更改回整数,将每个数字添加到局部变量总计。编写程序后,我抛出错误“字符串索引必须是整数,而不是str ”。这是您尝试向字符串添加数字时出现的错误。我很困惑,所以我研究了其他人是否有同样的问题。我也问过我的编程老师,我们仍然无法弄明白。有人可以解释我做错了吗?
它没有告诉我哪条线也在抛出错误。我忘了提及但是在网站上他们给出了一个解决方案,但它根本不是我正在做的事情,我只是对这个错误发生的原因感到非常困惑。
答案 0 :(得分:1)
只需将其更改为:
def digit_sum(n):
total = 0
n = str(n)
for i in n:
total += int(i)
return total
在python中,unik c ++和其他语言:
for循环迭代元素本身而不是索引。
答案 1 :(得分:0)
您的代码会迭代字符串的字符,而不是索引。改为:
def digit_sum2(n):
total = 0
n = str(n)
for i in range(0, len(n)):
total += int(n[i])
return total