小学课程表自动生成工具:Python Pandas 代码实现
import pandas as pd
创建一个空的DataFrame来存储课程表
schedule = pd.DataFrame(columns=['星期一', '星期二', '星期三', '星期四', '星期五'])
定义每个年级的科目和课时量
grade_subjects = {'一年级': {'语文': 4, '数学': 4, '英语': 2, '体育': 2, '科学': 2, '音乐': 1}, '二年级': {'语文': 4, '数学': 4, '英语': 2, '体育': 2, '美术': 1, '音乐': 1}, '三年级': {'语文': 4, '数学': 4, '英语': 2, '体育': 2, '科学': 2, '美术': 1}, '四年级': {'语文': 4, '数学': 4, '英语': 2, '体育': 2, '音乐': 1, '美术': 1}, '五年级': {'语文': 4, '数学': 4, '英语': 2, '体育': 2, '科学': 2, '音乐': 1}, '六年级': {'语文': 4, '数学': 4, '英语': 2, '体育': 2, '美术': 1, '音乐': 1}}
定义每个老师的科目和课时量
teacher_subjects = {'张老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '科学': 5, '音乐': 5}, '李老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '美术': 5, '音乐': 5}, '王老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '科学': 5, '美术': 5}, '赵老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '音乐': 5, '美术': 5}, '刘老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '科学': 5, '音乐': 5}, '陈老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '美术': 5, '音乐': 5}, '张2老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '科学': 5, '美术': 5}, '李2老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '音乐': 5, '美术': 5}, '王2老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '科学': 5, '音乐': 5}, '赵2老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '美术': 5, '音乐': 5}, '刘2老师': {'语文': 20, '数学': 15, '英语': 10, '体育': 10, '科学': 5, '美术': 5}}
定义每个科目的上课时间段
subject_periods = {'语文': 2, '数学': 2, '英语': 2, '体育': 1, '科学': 1, '音乐': 1, '美术': 1}
定义每个老师每天的课时量
teacher_daily_periods = {teacher: sum(subjects.values()) // 5 for teacher, subjects in teacher_subjects.items()}
定义每个年级每天的课时量
grade_daily_periods = {grade: sum(subjects.values()) // 5 for grade, subjects in grade_subjects.items()}
定义每个年级每天上课的科目
grade_daily_subjects = {grade: list(subjects.keys()) for grade, subjects in grade_subjects.items()}
定义每个教师每天上课的科目
teacher_daily_subjects = {teacher: list(subjects.keys()) for teacher, subjects in teacher_subjects.items()}
定义每个年级每天上课的科目安排
for grade, daily_subjects in grade_daily_subjects.items(): for day in range(5): subjects = daily_subjects.copy() day_schedule = [] for period in range(7): if period < 3: available_subjects = [subject for subject in subjects if subject in ['语文', '数学', '英语']] else: available_subjects = [subject for subject in subjects if subject != '体育']
if len(available_subjects) == 0:
subject = ''
elif len(available_subjects) == 1:
subject = available_subjects[0]
else:
subject = available_subjects[day % len(available_subjects)]
subjects.remove(subject)
day_schedule.append(subject)
schedule.loc[grade, '星期一':'星期五'] = day_schedule
输出课程表到Excel文件
schedule.to_excel('课程表.xlsx', index=True)
原文地址: https://www.cveoy.top/t/topic/qoCR 著作权归作者所有。请勿转载和采集!