You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代码报错"float object is not iterable",求作业平均分计算功能修复

问题分析与解决

错误原因很明确:你计算出的assignment_averages是单个浮点数(对应第i个作业的平均分),但后续却用for i, avg_score in assignment_averages:尝试遍历这个浮点数——浮点数不属于可迭代对象,因此抛出float object is not iterable错误。

另外代码还有两处小问题:

  • 内层循环的变量名i和外层循环的i重复,会覆盖外层的索引值
  • 注释描述和实际功能不符(注释写的是计算学生平均分,实际要实现的是作业平均分)

修正后的代码如下:

def print_report(students, num_of_assignments):

    # Prints Scores 
    print("\nFinal grade report:")
    for student_id, student_info in students.items():
        print(f"{student_info['Name']}'s average score was {student_info['Average']:.1f}, letter grade of {student_info['Letter_Grade']}")
    
    # Calculates and prints the average score for each assignment (Extra Credit)
    print("\nAssignment averages: ")
    for i in range(num_of_assignments):
        # 计算第i个作业的平均分
        assignment_average = sum(student_info["Scores"][i] for student_info in students.values()) / len(students)
        # 直接打印结果,无需额外循环
        print(f"The average for assignment {i+1} was {assignment_average:.1f}, letter grade of {get_letter_grade(assignment_average)}")

关键修改点:

  • 移除多余的内层for循环,直接打印单个作业的平均分
  • 将变量名改为assignment_average(单数更贴合每次仅计算一个作业平均分的逻辑)
  • 作业编号用i+1,避免显示从0开始的索引(可根据实际编号规则调整)
  • 修正注释描述,使其匹配实际功能

内容的提问来源于stack exchange,提问作者Dbread

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 22:55:19