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

Python指定作业平均分计算函数调试求助:代码无法正常运行

Python作业平均分计算函数修正方案

原需求(翻译自原注释)

该函数接收两个参数:完整的学生列表,以及一个整数(表示要计算平均分的作业编号,取值0、1、2或3)。你需要在函数声明中添加这两个参数。
函数将计算指定作业的平均分并返回该值。

原代码存在的问题

  • 参数拼写错误:assignement_number 多处拼写错误,正确应为 assignment_number
  • 编号校验逻辑错误:用assignement_number != range(0,3)判断合法性完全错误,合法编号是0-3(包含),需判断是否在该区间内
  • 错误覆盖参数:assignement_number= students[0][1] 把传入的作业编号替换成了第一个学生的成绩列表,彻底打乱逻辑
  • 平均分计算逻辑混乱:循环中错误使用sum(i[1][assignement_number])(单个成绩是数字,sum会报错),且未累加所有学生的对应成绩,也未做除法计算平均分
  • 无返回值:函数末尾未返回计算后的平均分

正确计算逻辑(公式)

平均分 = 所有学生对应作业的成绩总和 ÷ 学生总人数
代码逻辑拆解:

  1. 累加每个学生的第N项作业成绩,得到总分
  2. 用总分除以学生数量,得到平均分

修正后的完整代码

def AverageAssignment(students, assignment_number):
    # 校验作业编号是否在0-3的合法范围内
    if not (0 <= assignment_number <= 3):
        return -999
    
    # 计算所有学生该作业的成绩总和
    total_score = sum(student[1][assignment_number] for student in students)
    student_count = len(students)
    
    # 处理空学生列表的边界情况,避免除以0
    if student_count == 0:
        return 0  # 可根据需求调整返回值,比如返回-999
    
    return total_score / student_count

# 测试示例
students = [('Jane',[70,80,90,100]),('xinrong',[60,50,30,40]),('sima',[100,70,30,100])]
# 作业0平均分:(70+60+100)/3 ≈76.6667
print(AverageAssignment(students, 0))
# 作业3平均分:(100+40+100)/3 = 80
print(AverageAssignment(students, 3))
# 非法编号返回-999
print(AverageAssignment(students, 4))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:25:33