小学课程表自动生成器:使用 Python Pandas 生成高效的课程安排
import pandas as pd
定义年级和科目信息
grades = ['一年级', '二年级', '三年级', '四年级', '五年级', '六年级'] subjects = ['语文', '数学', '英语', '体育', '科学', '音乐', '美术', '历史', '地理', '生物', '化学']
定义每个年级的科目和指定科目的课时量
grade_subjects = { '一年级': {'语文': 3, '数学': 2, '英语': 2, '体育': 1, '科学': 1, '音乐': 1}, '二年级': {'语文': 3, '数学': 2, '英语': 2, '体育': 1, '科学': 1, '美术': 1}, '三年级': {'语文': 3, '数学': 2, '英语': 2, '体育': 1, '科学': 1, '历史': 1}, '四年级': {'语文': 3, '数学': 2, '英语': 2, '体育': 1, '科学': 1, '地理': 1}, '五年级': {'语文': 3, '数学': 2, '英语': 2, '体育': 1, '科学': 1, '生物': 1}, '六年级': {'语文': 3, '数学': 2, '英语': 2, '体育': 1, '科学': 1, '化学': 1} }
定义每个教师的指定课时量
teacher_hours = { '张老师': 20, '李老师': 18, '王老师': 16, '赵老师': 14, '刘老师': 12, '陈老师': 10, '周老师': 8, '钱老师': 6, '孙老师': 4, '吴老师': 2, '郑老师': 1 }
创建课程表DataFrame
timetable = pd.DataFrame(index=range(1, 6), columns=range(1, 8))
填充课程表
for day in range(1, 6): for period in range(1, 8): subject = None
# 语数英只排每天前3节里
if period <= 3:
# 查找可以排课的科目
for grade in grades:
subjects_grade = grade_subjects[grade]
for s in subjects_grade:
if subjects_grade[s] > 0:
subject = s
subjects_grade[s] -= 1
break
if subject:
break
# 体育不排每天前3节里
else:
# 查找可以排课的科目
for grade in grades:
subjects_grade = grade_subjects[grade]
for s in subjects_grade:
if s != '体育' and subjects_grade[s] > 0:
subject = s
subjects_grade[s] -= 1
break
if subject:
break
# 找到可以排课的科目后,查找可以排课的教师
if subject:
for teacher in teacher_hours:
if teacher_hours[teacher] > 0:
teacher_hours[teacher] -= 1
timetable.at[day, period] = f'{subject}({teacher})'
break
输出课程表到Excel
timetable.to_excel('timetable.xlsx', index=False)
原文地址: https://www.cveoy.top/t/topic/qosE 著作权归作者所有。请勿转载和采集!