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

Python编程练习:is_better_than_avg未按预期返回False排查

问题根因
  • 核心错误在is_better_than_avg函数的逻辑:你传入的pos是目标学生的下标,但函数内部用for pos in students遍历学生列表,直接覆盖了传入的pos参数,且遍历第一次就会直接返回结果,等于不管你传入什么下标,永远都是拿列表第一个学生(kosma)的平均分和全校平均分对比,所以第二个测试用例传入下标6也会返回和第一个用例相同的True。
  • 代码未定义计算单个学生平均分的avg函数,直接运行会报错,需要补全。
  • 原有逻辑还存在性能问题:循环中反复调用school_avg计算全校平均分,每次都会遍历所有学生,存在大量重复计算。
修复代码
# 补全单个学生平均分计算函数
def avg(student_dict):
    grades = student_dict["grades"]
    return sum(grades) / len(grades)

# 修复后的核心校验函数
def is_better_than_avg(students, pos):
    # 仅计算一次全校平均分
    school_total_avg = school_avg(students)
    # 直接取下标对应的目标学生
    target_student = students[pos]
    # 对比返回结果
    return avg(target_student) > school_total_avg
修复后效果

两个测试用例均会符合预期:

  • 校验下标0的学生返回True,测试通过
  • 校验下标6的学生返回False,测试通过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:54:03