源码分享站,wordpress to app,海外模板网站有哪些,旅游网站设计背景背景需求#xff1a;
大班组长发来一个“运动排班”的需求表#xff1a;“就是和去年一样的每个班的运动排班#xff0c;就因为今年大班变成7个班#xff0c;删掉一个场地#xff0c;就要重新做一份#xff0c;不然我就用去年的那份了#xff08;8个大班排班#xff0…背景需求
大班组长发来一个“运动排班”的需求表“就是和去年一样的每个班的运动排班就因为今年大班变成7个班删掉一个场地就要重新做一份不然我就用去年的那份了8个大班排班”
拆了中8班孩子被分流到其他7个大班 于是我拿出2023年2月的那份运动py,复制了一份新的2023年9月 参数修改
1、修改运动场地列表
对比发现
1删除了勇敢者道路 2最后的”爬龙接力赛”放到第一的位置 排序方式——没有考虑跳过节日全部按照一周五天排列 2、代码展示稍微修改一下搞了一个零时文件夹放7个班级EXCLE最后只保留一个合并EXCEL 目的2023年9月大班总部分散运动场地各班滚动排
作者阿夏
时间2023年9月6日15:30
import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
import time
import os,shutilprint(---------运动场地的循环------)
print(---------规则------)
print(---------1.有7个运动场地01 02 03 04 05 06 07 ------)
print(---------2.大1班从01开始游戏01 02 03 04 05 06 07 ------)
print(---------3.大2班从02开始游戏02 03 04 05 06 07 ,01 ------)
print(---------4.大3班从03开始游戏03 04 05 06 07 ,01 02 ------)
print(---------依次类推最后制作出所有大班的每周的运动排序表 ------)
print(---------通常是每周5天需要跳过节假日 ------)
time.sleep(2)print(---------第1步把8个运动场地循环21次105元素组成的列表------)# 本学期大1大2大3大4大5大7大8大9班其中6班空缺一共有8个大班
gradenum[1,2,3,4,5,6,7]# 新建一个”装N份word和PDF“的文件夹
lswjrC:\Users\jg2yXRZ\OneDrive\桌面\word2pdf2png\零时文件夹
if os.path.exists(lswj):print(目录已存在)
else:print(目录不存在,创建成功)os.mkdir(lswj)# print(len(gradenum))# 8# radenum的长度70-7一共循环8次
for num in range(0,len(gradenum)):L[]# 这里的L等于list因为和最后excle合并程序中的代码有冲突所以全部改成大写的首字母L1[]L3[] L2[]# 这里是8个运动场地因为后面有递进所以把最后一个 放到01前面这样摆放后面才会正确L3[爬笼接力赛\n爬笼、树屋、沙漏、书包、铃铛,小小交通车\n平衡车、三轮车、扭扭车、自行车、木桥,平衡小勇士\n长短竹梯、三脚架、长凳、轮胎、安全垫,百变小能手\n小足球、箩筐、百变迷宫架、垫子、马甲,山洞大探险\n轮胎、安全垫、麻绳,对战投投乐\n弹力棉球、吸盘球、飞镖盘,跑跳小达人\n轮胎、跨栏、锣鼓、接力棒,]
# 勇敢者道路\n背篓、布袋、矿泉水瓶,# 生成8个班级8组运动第1个元素不同for i in range(0,len(gradenum)): # b L3.pop(0) # 在运动场地列表L3中 删除 第1个元素 大1班 先删除就是从01开始L3.append(b) # 在运动场地列表L3最后 添加 第1个元素# print(L[0])L1.append(L3[0:len(gradenum)]) # 把不断变化的内容添加到L1 # 8个班级场地“基本元素“构成了L1列表[[01, 02, 03, 04, 05, 06, 07, ], [02, 03, 04, 05, 06, 07, , 01], [03, 04, 05, 06, 07, , 01, 02], [04, 05, 06, 07, , 01, 02, 03], [05, 06, # print(L1)for b in range(23): # 把各班“场地基本元素8个”循环21次数量多一点便于后期提取内容for y in L1[num]: #抽取L1中的一组组内容 L1[0][01, 02, 03, 04, 05, 06, 07, ]、L1[1][02, 03, 04, 05, 06, 07, , 01],# print(y) # 在用 y提取L1[0]中的01, 02, 03, 04, 05, 06, 07, 三个元素L.append(y) #把y提取的单个元素一个个加到列表里并且依次循环22次数量足够多print(L)# 打印出来大1班 列表组[01, 02, 03, 04, 05, 06, 07, 01, 02, 03, 04, 05, 06, 07, 01, 02, 03, 04, 05, 06, 07, 01, 02, 03, 04, 05, 06, 07, 01, 02, 03, 04, 05, 06, 07, ]print(---------第2步如果一周有5天不考虑跳过假日------)
# print(大{}班.format(gradenum[num]))for i in range(1):#共20周这是第1周是原始的位置81234aL[0:5]# 列表有8个运动项目但只要其中5个周一到周五for x1 in a:L2.append(x1)for i in range(2,22): #共20周 这是第2-20周 如果是21周把2,21 改成2,22 LL[5:] # 5代表前面一个数已经取过5位L.append(L) # 将a安排到最后一个座位bL[0:5] # 列表是八个循环我只要其中5个for x2 in b:L2.append(x2) # print(大{}班.format(gradenum[num]))# print(---------第3步如果每周需要跳过假日考虑跳过假日------)# # 每周需要的天数 跳过节日.如第1周只有2天工作9月1-2日周四周五) 第3周周一是中秋节放假1天所以只有4个工作日# # day[3,5,5,6,5,2,5,5,5,5,5,5,5,5,5,5,5,4,5,5,2]# kong# tt1清明节# tt2劳动节# tt3端午节# # 第1周 第2-7周开始 第8周部分# # for d in range(0,1): # L2.append(kong) # L2.append(kong) # for kk in L[0:int(35*62)]:# L2.append(kk) # # 清明# L2.append(tt1) # # 清明后到五一前 # for kk in L[int(35*62):int((35*62)(25*2))]:# L2.append(kk) # # 23日周日也上班 所以一共6天 一周排5填28号周五放到下周周一算# for kk in L[int((35*62)(25*2)):int((35*62)(25*2)6)]:# L2.append(kk) # # 劳动节休息休息3天实际1天空格 28日放到周一了 周二五一节 # L2.append(tt2) # # 劳动节456三天上班6周5填天 1周3天(劳动节后到端午节前)# for kk in L[int((35*62)(25*26)):int((35*62)(25*26)3(5*63))]:# L2.append(kk) # # 端午节三天占一个格子在周四 周日要上班顶替周五# L2.append(tt3) # for kk in L[int((35*62)(25*26)3(5*63)):int((35*62)(25*26)3(5*63))6]:# L2.append(kk) print(L2) print(---------第4步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)row1for d in range(0, len(dates)):sheet.write(row, 0, dates[d]) # 这里enumerate不能用,因为只有一列,所以就用row 1 # 第0行 写入 星期一 星期二,星期三,星期四,星期五 #weeks [周次,星期一,星期二,星期三,星期四,星期五]week len(weeks) col0for d in range(0, len(weeks)):sheet.write(0,col,weeks[d]) # 因为只有一行,所以就用有两种写法enumerate和这种col 1 # 输入星期的另一种写法# col0 # for row,item in enumerate(weeks,0): # 可以这样写L2[i]表格内的内容item索引数字col 0代表在A1 1代表在B1# sheet.write(col,row,item) # 第1行第1列开始写入一行”星期X# col1# 第B2开始写入 运动内容print(-----------第3步保存到excle--------)# 以下是xls保存# 在list_date五个五个取值 list3[]for k in range(0,21):list3.append(L2[k*5:k*55]) print(list3)# print(list)for opq in list3:print(opq)# arrlan2 len(list_d)# 日期抽取5天一组arrlan len(list3)# L2[07, , 01, 02, 03]的长度 21组row 1 # 第2行for i in range(arrlan): # 遍历21组[]的总数for col,item in enumerate(list3[i],1): # L2[i]表格内的内容item索引数字colsheet.write(row,col,item) # row,col,item 行1、列索引数字、内容表格内容 写入第一行第一列row 1 print(---------第5步xls保存N份工作簿每份一页------) try:workbook.save(lswj\\20230901大{}班分散运动.xls.format(gradenum[num])) # 新建保存 只能xlsprint(计划生成成功)except e:print(失败...)print(e)print(---------第6步把N份xls单页内容合并在1个工作簿的N个工作表内------)
time.sleep(2)# 获取目录下所有的表
import os
import pandas as pd# dir rC:\Users\jg2yXRZ\OneDrive\桌面\word2pdf2png
# 获取目录下所有的表
origin_file_list os.listdir(lswj)
print(origin_file_list)with pd.ExcelWriter(rC:\Users\jg2yXRZ\OneDrive\桌面\word2pdf2png\20230901大班分散运动 不跳过节日.xls) as writer:# 循环遍历表格for i in origin_file_list:# 拼接每个文件的路径file_path lswj \\ i# 把表名赋予给对应的sheetsheet_name i[:-4]df pd.read_excel(file_path)# 变相解决表格中第一行第一列为空的缺陷ring .join(list(str(i) for i in df.index))# string .join(list(str(i) for i in df.index))# 判断如果索引都为数字则不保留索引根据自己代码调整if ring.isdigit():df.to_excel(writer, sheet_name,indexFalse)else:df.to_excel(writer, sheet_name)# 新建一个”装N份word和PDF“的文件夹if os.path.exists(lswj):shutil.rmtree(lswj)print(目录已存在)
else:print(目录不存在,创建成功)
结果展示 最后零时文件夹自动被删除了。只保留一个合并XLSX 三、手动调整表格补充节假日
原始表格展示
1、有七个班级的工作表每个表文字都挤在一起
2、每个班级都是五天塞满不考虑节假日 一选中所有班级标签 没选中时时灰色底纹状态
二选择列拉宽 三自动换行 居中 四、手动删除内容添加更改节日 所有的班级的19周第一天都改成了元旦全选标签白色底纹状态下才能批量修改 同样的方法删除“第一周的前面几天” 同样的方法修改“国庆节”全选标签删除文字添加文字 完工了发给大班组长 给大班组长的相关解释
1、国庆节的补班周六周日 2、验证排序正确性以大1班为例第1周是“小小交通车“开始但”前面的4天删除了。图示说明正确性保证各班每天出去分散运动不会场地重复
3、每班一份五天便于教师做周计划贴文字不需要日期、也便于教师每天运动前看看班级张贴的运动表单了解活动场地班级贴的运动表单最好有日期但这又要按7天补日期和星期写起来有点费力
目前这样已经够用了。 继续测试更多的便利的工作表单吧