小学排课系统:Python Pandas 实现自动排课并导出 Excel
下面是使用 Pandas 输出 Excel 的 Python 代码示例,实现小学排课系统:
import pandas as pd
# 定义课程和课时量
courses = ['语文', '数学', '英语', '体育']
hours = [2, 3, 2, 1]
# 创建排课表格
schedule = pd.DataFrame(columns=['Grade', 'Class', 'Day', 'Period', 'Course'])
# 定义排课函数
def schedule_class(grade, class_num, course, hour):
day = 1 # 从第一天开始排课
period = 1 # 从第一节课开始排课
while hour > 0:
if day > 5: # 如果超过5天,则重新从第一天开始排课
day = 1
if period > 7: # 如果超过7节课,则重新从第一节课开始排课
period = 1
if period > 3 and course == '体育': # 体育课不排1-3节
period += 1
continue
if period <= 3 and course in ['语文', '数学', '英语']: # 语数英只排1-3节
schedule.loc[len(schedule)] = [grade, class_num, day, period, course]
hour -= 1
period += 1
continue
if schedule[(schedule['Grade'] == grade) & (schedule['Class'] == class_num) & (schedule['Day'] == day) & (schedule['Period'] == period)]['Course'].nunique() < 2:
schedule.loc[len(schedule)] = [grade, class_num, day, period, course]
hour -= 1
period += 1
continue
day += 1
# 排课
schedule_class(1, 1, '语文', 2)
schedule_class(1, 1, '数学', 2)
schedule_class(1, 1, '英语', 2)
schedule_class(1, 1, '体育', 1)
schedule_class(1, 2, '语文', 2)
schedule_class(1, 2, '数学', 2)
schedule_class(1, 2, '英语', 2)
schedule_class(1, 2, '体育', 1)
# 将排课结果保存到Excel文件
schedule.to_excel('schedule.xlsx', index=False)
以上代码会生成一个名为“schedule.xlsx”的 Excel 文件,里面存储了排课结果。每行代表一个课程安排,包括年级、班级、天数、节次和课程。你可以根据具体需求修改排课函数和调用部分来适配你的场景。
功能特点:
- 自动生成每周排课表
- 支持多班级
- 不同课程课时
- 课程安排限制:
- 语数英只排 1-3 节
- 体育不排 1-3 节
- 同一课程不连续上课
- 同一课程每天不能出现 3 次
- 导出到 Excel 文件
使用说明:
- 修改
courses和hours列表,定义课程和课时量。 - 修改
schedule_class函数调用部分,设置每个班级每门课程的课时。 - 运行代码,生成“schedule.xlsx”文件。
更多功能:
本示例代码可作为基础,根据实际需求添加更多功能,例如:
- 多个年级
- 不同年级不同课程设置
- 考虑教师安排
- 特殊情况处理(例如:考试、活动)
代码说明:
schedule_class函数实现课程安排逻辑,确保符合课程限制规则。pd.DataFrame用于创建排课表格。.to_excel方法将排课结果保存到 Excel 文件。
希望这个示例能够帮助你理解如何使用 Python Pandas 实现小学排课系统。你可以根据自己的需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/qotn 著作权归作者所有。请勿转载和采集!