digit_sum错误,遍历字符串然后更改为整数,python

时间:2017-11-14 23:10:01

标签: python

在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 ”。这是您尝试向字符串添加数字时出现的错误。我很困惑,所以我研究了其他人是否有同样的问题。我也问过我的编程老师,我们仍然无法弄明白。有人可以解释我做错了吗?

它没有告诉我哪条线也在抛出错误。我忘了提及但是在网站上他们给出了一个解决方案,但它根本不是我正在做的事情,我只是对这个错误发生的原因感到非常困惑。

2 个答案:

答案 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