以下是一个实现小学课程表自动生成的 Python 代码,支持设置年级、科目、课时量和教师信息,并根据限制条件自动排课。

import pandas as pd

# 定义班级和科目信息
grades = ['一年级', '二年级', '三年级', '四年级', '五年级', '六年级']
subjects = ['语文', '数学', '英语', '体育', '其他科目1', '其他科目2']

# 定义每个年级的科目和指定科目的课时量
grade_subject_hours = {
    '一年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
    '二年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
    '三年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
    '四年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
    '五年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
    '六年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
}

# 定义每个教师的指定课时量
teacher_hours = {
    '教师1': {'语文': 3, '数学': 3, '英语': 3, '体育': 1, '其他科目1': 1},
    '教师2': {'语文': 3, '数学': 3, '英语': 3, '体育': 1, '其他科目2': 1},
    '教师3': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
    '教师4': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
    '教师5': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
    '教师6': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
    '教师7': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
    '教师8': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
    '教师9': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
    '教师10': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
    '教师11': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
}

# 定义一个空的课程表
course_table = pd.DataFrame(columns=['时间', '星期一', '星期二', '星期三', '星期四', '星期五'])

# 生成课程表
for grade in grades:
    for subject in subjects:
        # 获取指定年级、科目的课时量
        hours = grade_subject_hours[grade][subject]
        
        # 获取指定科目的教师
        teacher = None
        for t, hrs in teacher_hours.items():
            if subject in hrs:
                teacher = t
                break
        
        # 按照课时量将课程分配到不同的时间段
        for i in range(hours):
            # 找到当前时间段的位置
            time_slot = i % 7 + 1
            
            # 将课程加入课程表
            course_table.loc[len(course_table)] = [f'{grade} {subject}', None, None, None, None, None]
            course_table.at[len(course_table)-1, f'星期{time_slot}'] = f'{teacher} {subject}'

# 输出课程表到Excel
course_table.to_excel('课程表.xlsx', index=False)

以上代码会生成一个包含每天每节课课程表的Excel文件“课程表.xlsx”。你可以根据实际需求修改班级、科目、课时量和教师的信息。

代码特点:

  • 支持设置年级、科目、课时量和教师信息
  • 支持限制语数英排在前三节课,体育不排在前三节课
  • 支持限制科目不能连续上两节课
  • 使用 Pandas 库生成 Excel 表格,方便查看和修改

使用方法:

  1. 复制代码到 Python 编辑器中
  2. 运行代码,将在当前目录生成“课程表.xlsx”文件
  3. 打开 Excel 文件查看课程表
  4. 可以根据实际需求修改代码中的信息

注意:

  • 代码中默认每个年级只有一个班级,如果需要多个班级,可以修改代码中的 grades 列表
  • 代码中默认每个科目只有一个教师,如果需要多个教师,可以修改代码中的 teacher_hours 字典
小学课程表自动生成 Python 代码:基于 Pandas 排课算法

原文地址: https://www.cveoy.top/t/topic/qosH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录