Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数字和错误,遍历字符串,然后更改为整数,python_Python - Fatal编程技术网

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

数字和错误,遍历字符串,然后更改为整数,python,python,Python,在Codecademy.com上,我在第8节“熟能生巧”,练习4他们要求你: 编写一个名为digital\u sum的函数,该函数取正整数n 作为输入并返回该数字的所有位数之和。例如: 数字总和(1234)应返回10,即1+2+3+4。(假设 您得到的数字将始终为正。) 由于您只需添加其中一个数字,因此我编写了一个程序,将数字更改为字符串,然后对每个数字进行迭代。迭代时,通过访问数字,然后将数字更改回整数,将每个数字添加到局部变量total。在编写程序之后,我被抛出了一个错误“字符串索引必须是整

在Codecademy.com上,我在第8节“熟能生巧”,练习4他们要求你:

编写一个名为digital\u sum的函数,该函数取正整数n 作为输入并返回该数字的所有位数之和。例如: 数字总和(1234)应返回10,即1+2+3+4。(假设 您得到的数字将始终为正。)

由于您只需添加其中一个数字,因此我编写了一个程序,将数字更改为字符串,然后对每个数字进行迭代。迭代时,通过访问数字,然后将数字更改回整数,将每个数字添加到局部变量total。在编写程序之后,我被抛出了一个错误“字符串索引必须是整数,而不是str”。这是尝试向字符串添加数字时遇到的错误。我对此感到困惑,所以我研究了其他人是否也有同样的问题。我也问过我的编程老师,但我们还是不明白。有人能解释一下我做错了什么吗


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

您的代码迭代字符串的字符,而不是索引。改为:

def digit_sum2(n):
     total = 0
     n = str(n)
     for i in range(0, len(n)):
         total += int(n[i])
     return total
只需将其更改为:

   def digit_sum(n):
    total = 0
    n = str(n)
    for i in n:
        total += int(i)
    return total
Python、UncC++和其他语言的P>:

for循环迭代元素本身,而不是它的索引。

对于n中的i:total+=int(i)
变量i不是索引,i是valueOk,现在我明白了,因为它循环遍历字符串而不是列表,所以我不需要索引。非常感谢。这一句话也是。现在我明白了,如果在for循环声明中包含变量,就不需要使用索引。谢谢大家!@凯德B,让我们更精确一点。在代码中,
n
从数字本身修改为数字的字符串表示形式。然后使用
表示in n:
。当
n
是字符串时,这意味着
i
将迭代字符串中的字符。所以
i
是一个字符@Elizabeth的答案有效,因为
int(i)
返回该字符的整数表示形式。在我的回答中,范围(0,len(n))中的i的
迭代范围[0,字符串长度n]。对于长度K的字符串,
i
将取值
0
K-1
。然后
n[i]
是字符串位置
i
处的字符。
   def digit_sum(n):
    total = 0
    n = str(n)
    for i in n:
        total += int(i)
    return total