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))这是我的代码,我正在尝试理解为什么我会得到一个超出索引的回溯。
发布于 2013-01-12 09:22:10
您不需要执行grade[i],因为您已经引用了列表中的元素-您所需要做的就是用一个普通的旧i替换它
但是,已经有一个内置函数用于此操作- sum
print(sum(grades))发布于 2013-01-12 09:22: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-12 09:22:25
for i in grades:遍历grades中的元素。它不会遍历索引。
要修复您的代码,只需使用i而不是grades[i]。
不要害怕使用print语句。它们非常适合调试代码。
https://stackoverflow.com/questions/14289215
复制相似问题