不明白为什么这不能正确总结

时间:2013-01-12 01:20:39

标签: python

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))

这是我的代码,我正在试图理解为什么我会退出索引追溯。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:13)

您不需要执行grade[i],因为您已经引用了列表中的元素 - 您只需要使用普通的i

替换它

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

print(sum(grades))

答案 2 :(得分:6)

for i in grades:遍历grades中的元素。它不会迭代索引。

要修复代码,只需使用i代替grades[i]

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