首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不理解为什么不能正确地总结

不理解为什么不能正确地总结
EN

Stack Overflow用户
提问于 2013-01-12 09:20:39
回答 3查看 295关注 0票数 7
代码语言:javascript
复制
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))

这是我的代码,我正在尝试理解为什么我会得到一个超出索引的回溯。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-12 09:22:10

您不需要执行grade[i],因为您已经引用了列表中的元素-您所需要做的就是用一个普通的旧i替换它

但是,已经有一个内置函数用于此操作- sum

代码语言:javascript
复制
print(sum(grades))
票数 13
EN

Stack Overflow用户

发布于 2013-01-12 09:22:14

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

代码语言:javascript
复制
def grades_sum(grades):
    total = 0
    for grade in grades:
        total += grade 
    return total

当然,正如其他人回答的那样,使用sum可以更优雅地实现这一点。

如果你真的需要其他东西的索引,你可以使用enumerate,如下所示:

代码语言:javascript
复制
def grades_sum(grades):
    total = 0
    for i, grade in enumerate(grades):
        total += grade #or grades[i] 
    return total

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

代码语言:javascript
复制
def grades_sum(grades):
    total = 0
    for i in range(len(grades)):
        total += grades[i] 
    return total
票数 14
EN

Stack Overflow用户

发布于 2013-01-12 09:22:25

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

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14289215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档