本学期我的岗位调整为机动岗(不担任固定班级的班主任),上午承担各种各条线的辅助工作(信息、科研、教研),下午进入相关班级代班。(排班要求如下)
表内说明:
第一周:周一进小3班、周二近中1、周四进中3,周五进中4班。
第二周:周一大1班,周二小3班、周四中1班,周五进中3班
……
这份排班规则让我感到比较晕:
1、循环排序:如果是5天固定进5个班级,还比较容易记忆,现在是4班一轮回,容易记不住。
2、周三空缺:此外周三不排班,需要跳过。更容易干扰排班。
因此:我尝试用”运动排班“的代码,进行程序批量排班,直接将转化出一份直观可读的排版表。
import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
# # list2=int(input('你班级第1周第1天的运动场地数字(不同班级不同的起始数字'))
# 第一步:把五天都改好
# listsingle=[ '小3(二)','中1(一)','中3(总)','中4(总)','大1(总)', '小3(二)','中1(一)','中3(总)','中4(总)','大1(总)',
# '小3(二)','中1(一)','中3(总)','中4(总)','大1(总)', '小3(二)','中1(一)','中3(总)','中4(总)','大1(总)',
# '小3(二)','中1(一)','中3(总)','中4(总)','大1(总)', '小3(二)','中1(一)','中3(总)','中4(总)','大1(总)',
# '小3(二)','中1(一)','中3(总)','中4(总)','大1(总)', '小3(二)','中1(一)','中3(总)','中4(总)','大1(总)',
# ]
print('-----------第1步,把每周排班5天做成21周的日期--------')
listsingle=[ '小3(二)','中1(一)','中3(总)','中4(总)','大1(总)']# 基本的一周排班
list=[]
for x in range(21): #大约有21周
for y in listsingle: # 提取基本一周排班里面的每一个值
# print(y)
list.append(y) # 把每个班级添加到list列表里,顺序为“小3(二)','中1(一)','中3(总)','中4(总)','大1(总)” 并且重复提取21次。
print(list) # 不缩进,打印出来只有一份105个元素的列表
print('-----------第2步,只抽取每周四个--------')
list2=[]# 取空列表
for i in range(1):#共21周这是第1周
list1=list
print(list[0:4]) # 列表有105个运动项目,但只要前0-4
list2.append(list[0:4])
for i in range(2,22): #共21周 这是第2-21周 ,如果是21周,把2,21 改成2,22
list1=list[0] # 获取第一个a
list=list[4:] # 前面第一周已经提取了0-4个,第二周从第5个元素(大1)开始提取
list.append(list1) # 将a安排到最后一个座位
print(list[0:4]) # 列表里每次提取4个
list2.append(list[0:4])
print('-----------第3步,保存到excle--------')
# 以下是xls保存
arrlan = len(list2)# list2是终端显示的列表值
workbook = xlwt.Workbook()# 新建xls工作簿
sheet = workbook.add_sheet("Sheet")# 新建xls工作簿的工作表的名字是sheet
row = 0
for i in range(arrlan):
for col,item in enumerate(list2[i],0):
sheet.write(row,col,item)
row += 1
try:
workbook.save(r"D:\test\06分散运动的循环\每周下午排班.xls") # 新建保存 只能xls
print('计划生成成功')
except e:
print('失败...')
print(e)
第1步:把初始排版顺序输入:'小3(二)','中1(一)','中3(总)','中4(总)','大1(总)'
第2步:第1周提取4个,第2-21周提取4个
第3步:保存EXCL并打开
技术有限,这里还是手动添加了周次和星期(每周下面插了一行,四个班级之间可能会调换,每周必须带满四个下午班)
努力研究更多的排班表(教师早晚值班表:需要跳过节日)、活动室安排表(时间班级不重复),降低更多的人工损耗。