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

编写Python脚本实现学生班级均匀分配的需求及解决方案

学生均匀分班的Python实现

针对81名学生的分班需求——单班最大容量限制为20人,要求分成5个班级(每班人数控制在16-17人,避免出现4个满额班加1个仅1人的极端情况),以下是实现该逻辑的Python脚本:

import math

def partition_students(students, max_capacity):
    # 按学生姓氏排序,保证分班公平性
    students.sort(key=lambda student: student.last_name)

    num_students = len(students)
    # 计算所需最少班级数(基于最大班容)
    num_classes = math.ceil(num_students / max_capacity)
    # 计算每班的目标人数(向上取整,确保人数均匀分布)
    num_students_per_class = math.ceil(num_students / num_classes)

    # 初始化空班级列表
    classes = [[] for _ in range(num_classes)]

    class_index = -1

    for i, student in enumerate(students):
        # 每分配num_students_per_class个学生,切换到下一个班级
        if i % num_students_per_class == 0:
            class_index = (class_index + 1) % num_classes

        classes[class_index].append(student)

    return classes

关键逻辑说明

  • 排序处理:先按学生姓氏排序,避免同姓氏学生过度集中在某个班级,保证分班的公平性。
  • 班级数计算:通过math.ceil(num_students / max_capacity)得出满足最大班容要求的最少班级数(81÷20向上取整为5)。
  • 每班人数计算:用math.ceil(num_students / num_classes)确定每班的目标人数(81÷5向上取整为17),确保各班人数尽可能均匀,不会出现人数悬殊的情况。
  • 循环分配:通过索引循环切换班级,每分配指定人数的学生后切换到下一个班级,最终实现人数均匀分布的分班效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:40:26