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)

小学课程表自动生成器:使用 Python Pandas 生成高效的课程安排

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

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