【办公类-06】python批量制作代班排班表

背景需求:

本学期我的岗位调整为机动岗(不担任固定班级的班主任),上午承担各种各条线的辅助工作(信息、科研、教研),下午进入相关班级代班。(排班要求如下)

【办公类-06】python批量制作代班排班表_第1张图片

表内说明:

第一周:周一进小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(总)'

【办公类-06】python批量制作代班排班表_第2张图片

 循环21周(本学期21)list列表里有105个元素周)

 第2步:第1周提取4个,第2-21周提取4个

【办公类-06】python批量制作代班排班表_第3张图片

 【办公类-06】python批量制作代班排班表_第4张图片

 第3步:保存EXCL并打开

【办公类-06】python批量制作代班排班表_第5张图片

 

【办公类-06】python批量制作代班排班表_第6张图片

 技术有限,这里还是手动添加了周次和星期(每周下面插了一行,四个班级之间可能会调换,每周必须带满四个下午班)

 【办公类-06】python批量制作代班排班表_第7张图片

 打印效果(这样就一目了然了))

【办公类-06】python批量制作代班排班表_第8张图片

感悟:python程序批量可以快速根据要求制定N周的排班级、排场地、排人计划,让人工摆脱无聊机械的重复所产生了暴躁和失误。

努力研究更多的排班表(教师早晚值班表:需要跳过节日)、活动室安排表(时间班级不重复),降低更多的人工损耗。

 

你可能感兴趣的