当前位置: 首页 > news >正文

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

背景需求:

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

表内说明:

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

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

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

 

 第3步:保存EXCL并打开

 

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

 

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

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

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

 

相关文章:

  • 【Linux】 - Linux中的重定向和管道符
  • 金额转大写查询易语言代码
  • Redis——事务,锁机制,秒杀案例 !!!!
  • ECO概念及理解
  • 金字塔思维
  • 青岛大学数据结构与算法——第4章
  • 波场与Valkyrie共同主持纳斯达克敲钟仪式 波场合规化再迎里程碑事件
  • 卷积神经网络的常用改进
  • (附源码)node.js知识分享网站 毕业设计 202038
  • css宽高自适应
  • 测试管理三要素
  • Linux Bond 以及Mode 6实验
  • 今日大盘指数查询
  • 深蓝激光slam理论与实践-第五节笔记(基于滤波器的激光slam方法(Grid-based))
  • 深入理解Spark Streaming流量控制及反压机制
  • Cumulo 的 ClojureScript 模块已经成型
  •  D - 粉碎叛乱F - 其他起义
  • Electron入门介绍
  • express如何解决request entity too large问题
  • FastReport在线报表设计器工作原理
  • gulp 教程
  • IDEA 插件开发入门教程
  • iOS编译提示和导航提示
  • js如何打印object对象
  • Python学习笔记 字符串拼接
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 彻底搞懂浏览器Event-loop
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 小程序01:wepy框架整合iview webapp UI
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 积累各种好的链接
  • 容器镜像
  • 如何在招聘中考核.NET架构师
  • ​Spring Boot 分片上传文件
  • #if 1...#endif
  • #LLM入门|Prompt#3.3_存储_Memory
  • #传输# #传输数据判断#
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • $(selector).each()和$.each()的区别
  • (10)ATF MMU转换表
  • (30)数组元素和与数字和的绝对差
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)windows配置JDK环境
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (九)c52学习之旅-定时器
  • (蓝桥杯每日一题)love
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (四)鸿鹄云架构一服务注册中心
  • (一) storm的集群安装与配置
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • .FileZilla的使用和主动模式被动模式介绍
  • .jks文件(JAVA KeyStore)
  • .Net 4.0并行库实用性演练
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net MySql