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

zyDE 11.14.1字典遍历任务技术咨询:作业平均分计算等问题

计算每项作业的平均分

针对你的任务2,这里提供直接的实现思路和代码:

核心思路

student_grades是一个字典,每个值对应一名学生的5项作业分数列表。要计算每项作业的平均分,需要按作业位置收集所有学生的分数,再对每组分数求平均值。

代码实现

# student_grades contains scores (out of 100) for 5 assignments
student_grades = {
    'Andrew': [56, 79, 90, 22, 50],
    'Nisreen': [88, 62, 68, 75, 78],
    'Alan': [95, 88, 92, 85, 85],
    'Chang': [76, 88, 85, 82, 90],
    'Tricia': [99, 92, 95, 89, 99]
}

# 方法1:分步计算
assignment_averages = []
# zip(*...) 会把所有学生的分数列表按作业位置转置,生成每个作业的分数集合
for assignment_scores in zip(*student_grades.values()):
    average = sum(assignment_scores) / len(assignment_scores)
    assignment_averages.append(average)

# 输出每项作业的平均分(保留两位小数)
for idx, avg in enumerate(assignment_averages, start=1):
    print(f"第{idx}项作业平均分: {avg:.2f}")

# 方法2:用列表推导式简化写法
assignment_averages_short = [sum(scores)/len(scores) for scores in zip(*student_grades.values())]
print("简化写法的结果:", assignment_averages_short)

代码解释

  • zip(*student_grades.values()):student_grades.values()获取所有学生的分数列表,*操作符将这些列表解包,zip函数会把每个列表的对应位置元素打包成元组(比如第一个元组是所有学生的第1项作业分数)。
  • sum(assignment_scores)/len(assignment_scores):对每个作业的分数集合求和,再除以学生人数得到平均分。
  • enumerate(..., start=1):让作业序号从1开始,更符合日常计数习惯。

运行代码后,你会得到5项作业各自的平均分结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:01:07