为了保护广大幼儿及教职工的健康安全,从2022年9月开学后,上海在校学生统一在学校内进行核酸采样。本周我开始做机动班,也轮到了幼儿园核酸采样点的工作——2位行政+1位机动 3个人自行协商,每天由2个人在2号采样点进行采样和辅助工作。
这几天3个人都是口头协商。我想如果有一个《2号点3人采样排班表》,就能更合理的分配工作量。不过从实际情况来看,管理层的工作非常忙碌琐碎,基本不可能按照表格分配工作,最终还是以每天的协商为主。但是从信息管理的角度,我还是尝试写一个“核酸采样点3人轮流排班表”
因为前期有2份排班表的代码(机动岗代班排班表、大班运动场地排序表),所以这份代码很快就完成了。
import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
# # list2=int(input('你班级第1周第1天的运动场地数字(不同班级不同的起始数字'))
print('-----------第1步,3个人每天轮2人做核酸(前面的人采样、后面的掰管)--------')
# namelist=[ 'XRZ','YTH','LZH']# 基本的一周排班
name=[ '01张三','02李四','03王五']# 基本的一周排班
namelist=[]
# 无论总数多少人,都可以任意组合,排除重复值
num = 0
for i in name:
for k in name:
if (i!=k)and(k!=i) :
print("人员组合:"+str(i)+"、"+str(k))
num = num + 1
namelist.append(str(i)+"、"+str(k))
print(namelist)
print("人员组合总数是:"+ str(num)+'组')
# ['01张三、02李四', '01张三、03王五', '02李四、01张三', '02李四、03王五', '03王五、01张三', '03王五、02李四']
# 人员组合总数是:6组
# 可以执行3个人的多,如果>3人会出现错误和重复值,这里不用)
# for i in range(0,len(name)):
# print(i)
# a=name[i-1]+"、"+name[i]
# b=name[i]+"、"+name[i-1]
# namelist.append(a)
# namelist.append(b)
# print(namelist)
'''
显示结果:['03王五、01张三', '01张三、03王五', '01张三、02李四', '02李四、01张三', '02李四、03王五', '03王五、02李四']
'''
print('---------第2步:把基本的内容循环21次 126个元素------')
list=[]
list2=[]
for x in range(21): #大约有21周,但是
for y in namelist: # 提取基本一周排班里面的每一个值
# print(y)
list.append(y) # 把每个班级添加到list列表里,顺序为“小3(二)','中1(一)','中3(总)','中4(总)','大1(总)” 并且重复提取21次。
print(list) # 不缩进,打印出来只有一份126个元素的列表
print('---------第3步:每周需要跳过假日(考虑跳过假日)------')
# 每周需要的天数 (跳过节日.如第1周只有2天工作,9月1-2日(周四周五) ,第3周周一是中秋节放假1天,所以只有4个工作日)
day=['2','5','4','5','5','2','5','5','5','5','5','5','5','5','5','5','5','4','5','5','2']
# 第1周
for d in range(0,1): # d=索引数字
print(list[0:int(day[0])]) # 列表有8个运动项目,但只要其中5个(周一到周五)
list2.append(list[0:int(day[0])])
# 第2周开始
for d in range(1,len(day)): # 0-21
# print(d+1)
list=list[int(day[d-1]):] # day[0]=2,
list.append(list) # 将a安排到最后一个座位
print(list[0:int(day[d])])# 列表是八个循环,我只要其中5个
list2.append(list[0:int(day[d])])
print('-----------第3步,保存到excle--------')
# 以下是xls保存
workbook = xlwt.Workbook()# 新建xls工作簿
sheet = workbook.add_sheet("Sheet")# 新建xls工作簿的工作表的名字是sheet
# 第0列 写入“第1周、第2周、第3周……第21周
dates=[]
for i in range(1,22):
n="第{}周".format(i) # 用遍历方法获得“第1周、第2周、第21周”字样,
dates.append(n) # 添加到列表
print(dates)
# print(date)
row=1
for d in range(0, len(dates)):
sheet.write(row, 0, dates[d]) # 这里enumerate不能用,因为只有一列,所以就用
row += 1
# 第0行 写入 星期一 '星期二','星期三','星期四','星期五 #
weeks = ['周次','星期一','星期二','星期三','星期四','星期五']
week = len(weeks)
col=0
for d in range(0, len(weeks)):
sheet.write(0,col,weeks[d]) # 因为只有一行,所以就用有两种写法(enumerate和这种)
col+= 1
arrlan = len(list2)# list2是终端显示的列表值
row = 1 # 第2行
for i in range(arrlan): # 遍历21组[]的总数
for col,item in enumerate(list2[i],1): # L2[i]=表格内的内容=item,索引数字=col
sheet.write(row,col,item) # row,col,item 行=1、列=索引数字、内容=表格内容 写入第一行第一列
row += 1
try:
workbook.save(r"D:\test\03办公类\10采样点轮班\采样点轮班排班.xls") # 新建保存 只能xls
print('计划生成成功')
except e:
print('失败...')
print(e)
1、岗位出席情况:将3人循环成6种2人岗排列方法
1、需要手动调整节日那一周的排班信息的位置
2.手动表格制作
2号点采样轮班表(2022.9-2023.1) | |||||
周次 | 星期一 | 星期二 | 星期三 | 星期四 | 星期五 |
第1周 | 03夏、01姚 | 01姚、03夏 | |||
第2周 | 01姚、02凌 | 02凌、01姚 | 02凌、03夏 | 03夏、02凌 | 03夏、01姚 |
第3周 | 中秋 | 01姚、03夏 | 01姚、02凌 | 02凌、01姚 | 02凌、03夏 |
第4周 | 03夏、02凌 | 03夏、01姚 | 01姚、03夏 | 01姚、02凌 | 02凌、01姚 |
第5周 | 02凌、03夏 | 03夏、02凌 | 03夏、01姚 | 01姚、03夏 | 01姚、02凌 |
第6周 | 国庆 | 02凌、01姚 | 02凌、03夏 | ||
第7周 | 03夏、02凌 | 03夏、01姚 | 01姚、03夏 | 01姚、02凌 | 02凌、01姚 |
第8周 | 02凌、03夏 | 03夏、02凌 | 03夏、01姚 | 01姚、03夏 | 01姚、02凌 |
第9周 | 02凌、01姚 | 02凌、03夏 | 03夏、02凌 | 03夏、01姚 | 01姚、03夏 |
第10周 | 01姚、02凌 | 02凌、01姚 | 02凌、03夏 | 03夏、02凌 | 03夏、01姚 |
第11周 | 01姚、03夏 | 01姚、02凌 | 02凌、01姚 | 02凌、03夏 | 03夏、02凌 |
第12周 | 03夏、01姚 | 01姚、03夏 | 01姚、02凌 | 02凌、01姚 | 02凌、03夏 |
第13周 | 03夏、02凌 | 03夏、01姚 | 01姚、03夏 | 01姚、02凌 | 02凌、01姚 |
第14周 | 02凌、03夏 | 03夏、02凌 | 03夏、01姚 | 01姚、03夏 | 01姚、02凌 |
第15周 | 02凌、01姚 | 02凌、03夏 | 03夏、02凌 | 03夏、01姚 | 01姚、03夏 |
第16周 | 01姚、02凌 | 02凌、01姚 | 02凌、03夏 | 03夏、02凌 | 03夏、01姚 |
第17周 | 01姚、03夏 | 01姚、02凌 | 02凌、01姚 | 02凌、03夏 | 03夏、02凌 |
第18周 | 03夏、01姚 | 01姚、03夏 | 01姚、02凌 | 02凌、01姚 | 元旦 |
第19周 | 02凌、03夏 | 03夏、02凌 | 03夏、01姚 | 01姚、03夏 | 01姚、02凌 |
第20周 | 02凌、01姚 | 02凌、03夏 | 03夏、02凌 | 03夏、01姚 | 01姚、03夏 |
第21周 | 01姚、02凌 | 02凌、01姚 | |||
说明: | 第1位 | 采样 | |||
第2位 | 辅助(管子) |