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)

小学课程表自动生成工具:Python Pandas 代码实现

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

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