小学课程表自动生成 Python 代码:基于 Pandas 排课算法
以下是一个实现小学课程表自动生成的 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 表格,方便查看和修改
使用方法:
- 复制代码到 Python 编辑器中
- 运行代码,将在当前目录生成“课程表.xlsx”文件
- 打开 Excel 文件查看课程表
- 可以根据实际需求修改代码中的信息
注意:
- 代码中默认每个年级只有一个班级,如果需要多个班级,可以修改代码中的
grades列表 - 代码中默认每个科目只有一个教师,如果需要多个教师,可以修改代码中的
teacher_hours字典
原文地址: https://www.cveoy.top/t/topic/qosH 著作权归作者所有。请勿转载和采集!