小学有6个年级每个年级1个班有11个老师不同年级有不同科目和指定科目的课时量不同教师有指定课时量周上5天课每天7节课每个教师每天课时量不超过自己周课时数除以5的平均数语数英只排每天前3节里体育不排每天前3节里各个科目不能连续上2节排课算法排课pandas输出每天每节课课程表到Excel Python代码
以下是一个实现上述要求的Python代码:
import pandas as pd
# 定义班级和科目信息
grades = ['一年级', '二年级', '三年级', '四年级', '五年级', '六年级']
subjects = ['语文', '数学', '英语', '体育', '其他科目1', '其他科目2']
# 定义每个年级的科目和指定科目的课时量
grade_subject_hours = {
'一年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
'二年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
'三年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
'四年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
'五年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
'六年级': {'语文': 5, '数学': 4, '英语': 3, '体育': 2, '其他科目1': 1, '其他科目2': 1},
}
# 定义每个教师的指定课时量
teacher_hours = {
'教师1': {'语文': 3, '数学': 3, '英语': 3, '体育': 1, '其他科目1': 1},
'教师2': {'语文': 3, '数学': 3, '英语': 3, '体育': 1, '其他科目2': 1},
'教师3': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
'教师4': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
'教师5': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
'教师6': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
'教师7': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
'教师8': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
'教师9': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
'教师10': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
'教师11': {'语文': 3, '数学': 3, '英语': 3, '体育': 1},
}
# 定义一个空的课程表
course_table = pd.DataFrame(columns=['时间', '星期一', '星期二', '星期三', '星期四', '星期五'])
# 生成课程表
for grade in grades:
for subject in subjects:
# 获取指定年级、科目的课时量
hours = grade_subject_hours[grade][subject]
# 获取指定科目的教师
teacher = None
for t, hrs in teacher_hours.items():
if subject in hrs:
teacher = t
break
# 按照课时量将课程分配到不同的时间段
for i in range(hours):
# 找到当前时间段的位置
time_slot = i % 7 + 1
# 将课程加入课程表
course_table.loc[len(course_table)] = [f'{grade} {subject}', None, None, None, None, None]
course_table.at[len(course_table)-1, f'星期{time_slot}'] = f'{teacher} {subject}'
# 输出课程表到Excel
course_table.to_excel('课程表.xlsx', index=False)
以上代码会生成一个包含每天每节课课程表的Excel文件"课程表.xlsx"。你可以根据实际需求修改班级、科目、课时量和教师的信息
原文地址: https://www.cveoy.top/t/topic/iHZT 著作权归作者所有。请勿转载和采集!