7
grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]

def grades_sum(grades):
    sum = 0
    for i in grades:
        sum += grades[i]
print(grades_sum(grades))

那是我的代码,我试图理解为什么我会得到一个索引外的回溯。

4

3 回答 3

14

遍历列表将返回列表中的项目,而不是项目的索引。您编写的正确代码如下所示:

def grades_sum(grades):
    total = 0
    for grade in grades:
        total += grade 
    return total

当然,正如其他人已经回答的那样,使用sum.

如果您确实需要其他索引,则可以这样使用enumerate

def grades_sum(grades):
    total = 0
    for i, grade in enumerate(grades):
        total += grade #or grades[i] 
    return total

或者,如果您根本不关心检索该项目

def grades_sum(grades):
    total = 0
    for i in range(len(grades)):
        total += grades[i] 
    return total
于 2013-01-12T01:22:13.940 回答
13

您不需要这样做,grade[i]因为您已经在引用列表中的元素 - 您需要做的就是用普通旧的替换它i

但是,已经有一个内置函数 -sum

print(sum(grades))
于 2013-01-12T01:22:10.480 回答
6

for i in grades:遍历grades. 它不会遍历索引。

要修复您的代码,只需使用i而不是grades[i].

不要害怕使用print语句。它们非常适合调试代码。

于 2013-01-12T01:22:25.167 回答