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))
这是我的代码,我正在试图理解为什么我会退出索引追溯。
答案 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
语句。它们非常适合调试代码。