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))
那是我的代码,我试图理解为什么我会得到一个索引外的回溯。
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))
那是我的代码,我试图理解为什么我会得到一个索引外的回溯。
遍历列表将返回列表中的项目,而不是项目的索引。您编写的正确代码如下所示:
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
您不需要这样做,grade[i]
因为您已经在引用列表中的元素 - 您需要做的就是用普通旧的替换它i
但是,已经有一个内置函数 -sum
print(sum(grades))
for i in grades:
遍历grades
. 它不会遍历索引。
要修复您的代码,只需使用i
而不是grades[i]
.
不要害怕使用print
语句。它们非常适合调试代码。