背景需求:
新的周计划模板上有一个“运动-集体游戏”栏目。内容来自参考用书《运动》
根据新要求,周一的运动集体游戏必须是新的,周二的运动集体游戏来自前一周的内容,因此可以判定写法如下:
星期 | 星期一 | 星期二 | 星期三 | 星期四 | 星期五 |
第1周 | 新A | 新B | 新A | 新B | 新A |
第2周 | 新C | 旧A | 新C | 旧A | 新C |
第3周 | 新D | 旧C | 新D | 旧C | 新D |
需求:
我不想再每周翻阅《运动》,找相关的运动项目填写周计划。
更希望运用Python自动从《运动》的相关项目中进行随机不重复的提取。
操作过程:
一、扫描图片获得运动文本
1、扫描获得《运动》的内容目录
多页目录扫描图片
2、用文字识别工具提取目录
3、EXCEL贴目录
填充空格,数据分类
形成四个表格
4、内容确定
可以用于模板填写的运动内容,只有第二项“基本动作活动”
基本动作分为三类:
(1)走跑跳( 小班、中班、大班)
(2)钻爬( 小班、中班、大班)
(3)投掷( 小班、中班、大班)
结果:从“基本动作”里面选择“中班”,把所有中班能用的运动复制在一张表格里。
二、写代码
1、从EXCLE提取项目名称,根据“走跑、攀爬、投掷”类型分别提取3个列表。
2、按顺序提取的列表内容进行洗牌打乱,组合成27个运动内容的列表(防止N个班级抽取内容都一样)
3、从27个内容中进行循环提取,组合成最终的样式
4、两个一组提取
5、写入表格
代码展示
'''
目的:自动从集体运动中抽取2个一组的项目 第1周 A B 第2周C A 第3周D C
作者:阿夏
时间:2023年3月16日
'''
print('-------------第1步,读取EXCLE 提取运动列表----------------')
import os
import xlrd
import random
num=int(input('一共几周?\n'))
datapath= r'D:\test\02办公类\11集体游戏\运动书的目录.xlsx' #存放图片的文件夹
x1 = xlrd.open_workbook(datapath)#读取excel
sheet1 = x1.sheet_by_name("中班基本运动抽取")#读取sheet1
idlist = sheet1.col_values(3)#第三列是运动名称存放第一列
print(idlist)
# ['运动', '长臂人', '马术表演', '看谁不出圈', '潜水员', '拔鸡毛', '好伙伴', '老狼老狼几点了', '筑路', '击泡泡', '走路的纸人', '跳路阶', '海上救援', '拉圈快走', '母鸡与小鸡', '踩脚印', '猫头鹰抓田
# 鼠', '我是滑稽人', '高个子', '快速占圈', '打高尔夫球', '穿越草地', '丢手绢', '笃笃笃,卖糖粥', '贴人', '鼠与猫', '有趣的通道', '骆驼运粮', '动物与树林', '爬行动物表演', '刺猬背枣子', '小花狗和小
# 猕猴', '狗熊钻圈', '五彩路', '吸尘器', '乌龟搬家', '弟妹追拍', '鳄鱼和猴子', '甲壳虫', '大蟒蛇', '运水', '纱巾飞扬', '流星球', '击点', '打怪兽', '打保龄球', '套玩具', '瞄准投物', '你投我挡', '打
# # 水怪']
# 提取目录,并打乱顺序
l1=idlist[1:25]# 按顺序抽取所有 ——1以走、跑、跳为主的活动,
# print(l1)
# ['长臂人', '马术表演', '看谁不出圈', '潜水员', '拔鸡毛', '好伙伴', '老狼老狼几点了', '筑路', '击泡泡', '走路的纸人', '跳路阶', '海上救援', '拉圈快走', '母鸡与小鸡', '踩脚印', '猫头鹰抓田鼠', '我
# 是滑稽人', '高个子', '快速占圈', '打高尔夫球', '穿越草地', '丢手绢', '笃笃笃,卖糖粥', '贴人']
l2=idlist[25:41]# 按顺序抽取所有——2以钻、攀爬为主的活动
# print(l2)
# ['鼠与猫', '有趣的通道', '骆驼运粮', '动物与树林', '爬行动物表演', '刺猬背枣子', '小花狗和小猕猴', '狗熊钻圈', '五彩路', '吸尘器', '乌龟搬家', '弟妹追拍', '鳄鱼和猴子', '甲壳虫', '大蟒蛇', '运水']
l3=idlist[41:50]# 按顺序抽取所有——3以投掷为主的活动
# print(l3)
# ['纱巾飞扬', '流星球', '击点', '打怪兽', '打保龄球', '套玩具', '瞄准投物', '你投我挡', '打水怪']
print('-------------第2步,打乱3类中的运动项目前后顺序,循环抽取3个=2周 ----------------')
random.shuffle(l1) # 打乱顺序
random.shuffle(l2) # 打乱顺序
random.shuffle(l3) # 打乱顺序
# print(l1)
# print(l2)
# print(l3)
list=[]
for x in range(len(l3)): # l3最少,只有9条,所以遍历最多9次
list.append(l1[x]) #抽取的还是l1的内容
list.append(l2[x]) #抽取的还是l1的内容
list.append(l3[x]) #抽取的还是l1的内容
print(list)
# 每次抽取的都不一样
# 第一次['拔鸡毛', '爬行动物表演', '你投我挡', '高个子', '鳄鱼和猴子', '打水怪', '拉圈快走', '弟妹追拍', '击点', '猫头鹰抓田鼠', '骆驼运粮', '纱巾飞扬', '马术表演', '吸尘器', '流星球', '打高尔夫球', '大
# 蟒蛇', '瞄准投物', '贴人', '狗熊钻圈', '打保龄球', '走路的纸人', '甲壳虫', '打怪兽', '看谁不出圈', '刺猬背枣子', '套玩具']
# 第二次['看谁不出圈', '小花狗和小猕猴', '瞄准投物', '打高尔夫球', '动物与树林', '打怪兽', '贴人', '运水', '你投我挡', '拉圈快走', '五彩路', '流星球', '走路的纸人', '甲壳虫', '打水怪', '丢手绢', '狗熊钻
# 圈', '纱巾飞扬', '老狼老狼几点了', '大蟒蛇', '打保龄球', '猫头鹰抓田鼠', '鼠与猫', '套玩具', '快速占圈', '爬行动物表演', '击点']
# print('-------------第3步,做成AB结构的一串列表(abcadced) ----------------')
list_all=[]
# 第1周提取0和1
list_all.append(list[0])
list_all.append(list[1])
# print(list_all)
# 第2周提取2和0
list_all.append(list[2])
list_all.append(list[0])
print(list_all)
# # # 第3-X周提取3和2 (x和x-1)
for i in range(3,len(list)):
list_all.append(list[i])
list_all.append(list[i-1])
print(list_all)
print(len(list_all))
# print('-------------第4步,拆分2天一组 工52组, ----------------')
list_all_all=[]
for b in range(len(list_all)):
list_all_all.append(list_all[b*2:b*2+2])
print(list_all_all)
# [['老狼老狼几点了', '鳄鱼和猴子'], ['打水怪', '老狼老狼几点了'], ['穿越草地', '打水怪'], ['小花狗和小猕猴', '穿越草地'], ['纱巾飞扬', '小花狗和小猕猴'], ['好伙伴', '纱巾飞扬'], ['吸尘器', '好伙
# 伴'], ['瞄准投物', '吸尘器'], ['长臂人', '瞄准投物'], ['爬行动物表演', '长臂人'], ['你投我挡', '爬行动物表演'], ['海上救援', '你投我挡'], ['大蟒蛇', '海上救援'], ['流星球', '大蟒蛇'], ['丢手绢', '流星球'], ['乌龟搬家', '丢手绢'], ['击点', '乌龟搬家'], ['踩脚印', '击点'], ['甲壳虫', '踩脚印'], ['套玩具', '甲壳虫'], ['拔鸡毛', '套玩具'], ['五彩路', '拔鸡毛'], ['打保龄球', '五彩路'], ['笃
# 笃笃,卖糖粥', '打保龄球'], ['刺猬背枣子', '笃笃笃,卖糖粥'], ['打怪兽', '刺猬背枣子'], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]
# # ['老狼老狼几点了', '鳄鱼和猴子']
for c in list_all_all[0:num]: # 只要20周,列表9*3=27组
print(c)
# ['老狼老狼几点了', '鳄鱼和猴子']
# ['打水怪', '老狼老狼几点了']
# ['穿越草地', '打水怪']
# ['小花狗和小猕猴', '穿越草地']
# ['纱巾飞扬', '小花狗和小猕猴']
# ['好伙伴', '纱巾飞扬']
# ['吸尘器', '好伙伴']
# ['瞄准投物', '吸尘器']
# ['长臂人', '瞄准投物']
# ['爬行动物表演', '长臂人']
# ['你投我挡', '爬行动物表演']
# ['海上救援', '你投我挡']
# ['大蟒蛇', '海上救援']
# ['流星球', '大蟒蛇']
# ['丢手绢', '流星球']
# ['乌龟搬家', '丢手绢']
# ['击点', '乌龟搬家']
# ['踩脚印', '击点']
# ['甲壳虫', '踩脚印']
# ['套玩具', '甲壳虫']
# print('-------------第4步,拆分2天一组 工52组, ----------------')
print('---------第4步:xls写入)------')
import xlwt
workbook = xlwt.Workbook()# 新建xls工作簿
sheet = workbook.add_sheet("Sheet")# 新建xls工作簿的工作表的名字是sheet
# # 第0列 写入“大1班、大2班
# dates=[]
# # for i in range(0,len(num)):
# for i in range(0,len(num)):
# print(i)
# n='大{}班'.format(num[i]) # 用遍历方法获得“大1班、大2班
# dates.append(n)
# print(dates)
# # 添加到列表
# row=1
# for d in range(0, len(dates)):
# sheet.write(row, 0, dates[d]) # 这里enumerate不能用,因为只有一列,所以就用
# row += 1
# 第0列 写入“第2周、第3周……第21周
dates=[]
# for i in range(0,len(num)):
for i in range(1,num+1):
print(i)
n="第{}周".format(i) # 用遍历方法获得“第1周、第2周、第21周”字样,
dates.append(n)
print(dates)
# 添加到列表
# 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
# 第B2开始写入 活动室内容
arrlan = len(list_all_all[0:num])
row = 1 # 第2行
for i in range(arrlan): # 遍历21组[]的总数
for col,item in enumerate(list_all_all[i],1): # L2[i]=表格内的内容=item,索引数字=col
sheet.write(row,col,item) # row,col,item 行=1、列=索引数字、内容=表格内容 写入第一行第一列
row += 1
print('---------第5步:xls保存N份工作簿(每份一页)------')
try:
workbook.save(r"D:\test\02办公类\11集体游戏\分散运动一个班级(1周2天样式).xls") # 新建保存 只能xls
print('计划生成成功')
except e:
print('失败...')
print(e)
两天一组 保存效果
随机生成1
随机生成2
小结:
1、因为我批量做周计划模板里面只需要两个基本的AB样式即可(word里面自动复制黏贴周三、周四、周五的内容)所以这里没有批量5天的内容。
2、通过这种抽取,可以实现运动技能的均衡(“走跑跳、平衡、投掷”连续滚动出现)”,
3、洗牌抽取,为批量制作多个班级的运动内容打下基础(班级与班级之间不会重复)
PS:既然做了2天,还是做一套5天样式。
核心:加一段6抽5空1的的代码
'''
目的:自动从集体运动中抽取2个一组的项目 第1周 A B 第2周C A 第3周D C
作者:阿夏
时间:2023年3月16日
'''
print('-------------第1步,读取EXCLE 提取运动列表----------------')
import os
import xlrd
import random
num=int(input('一共几周?\n'))
datapath= r'D:\test\02办公类\11集体游戏\运动书的目录.xlsx' #存放图片的文件夹
x1 = xlrd.open_workbook(datapath)#读取excel
sheet1 = x1.sheet_by_name("中班基本运动抽取")#读取sheet1
idlist = sheet1.col_values(3)#第三列是运动名称存放第一列
print(idlist)
# ['运动', '长臂人', '马术表演', '看谁不出圈', '潜水员', '拔鸡毛', '好伙伴', '老狼老狼几点了', '筑路', '击泡泡', '走路的纸人', '跳路阶', '海上救援', '拉圈快走', '母鸡与小鸡', '踩脚印', '猫头鹰抓田
# 鼠', '我是滑稽人', '高个子', '快速占圈', '打高尔夫球', '穿越草地', '丢手绢', '笃笃笃,卖糖粥', '贴人', '鼠与猫', '有趣的通道', '骆驼运粮', '动物与树林', '爬行动物表演', '刺猬背枣子', '小花狗和小
# 猕猴', '狗熊钻圈', '五彩路', '吸尘器', '乌龟搬家', '弟妹追拍', '鳄鱼和猴子', '甲壳虫', '大蟒蛇', '运水', '纱巾飞扬', '流星球', '击点', '打怪兽', '打保龄球', '套玩具', '瞄准投物', '你投我挡', '打
# # 水怪']
# 提取目录,并打乱顺序
l1=idlist[1:25]# 按顺序抽取所有 ——1以走、跑、跳为主的活动,
# print(l1)
# ['长臂人', '马术表演', '看谁不出圈', '潜水员', '拔鸡毛', '好伙伴', '老狼老狼几点了', '筑路', '击泡泡', '走路的纸人', '跳路阶', '海上救援', '拉圈快走', '母鸡与小鸡', '踩脚印', '猫头鹰抓田鼠', '我
# 是滑稽人', '高个子', '快速占圈', '打高尔夫球', '穿越草地', '丢手绢', '笃笃笃,卖糖粥', '贴人']
l2=idlist[25:41]# 按顺序抽取所有——2以钻、攀爬为主的活动
# print(l2)
# ['鼠与猫', '有趣的通道', '骆驼运粮', '动物与树林', '爬行动物表演', '刺猬背枣子', '小花狗和小猕猴', '狗熊钻圈', '五彩路', '吸尘器', '乌龟搬家', '弟妹追拍', '鳄鱼和猴子', '甲壳虫', '大蟒蛇', '运水']
l3=idlist[41:50]# 按顺序抽取所有——3以投掷为主的活动
# print(l3)
# ['纱巾飞扬', '流星球', '击点', '打怪兽', '打保龄球', '套玩具', '瞄准投物', '你投我挡', '打水怪']
print('-------------第2步,打乱3类中的运动项目前后顺序,循环抽取3个=2周 ----------------')
random.shuffle(l1) # 打乱顺序
random.shuffle(l2) # 打乱顺序
random.shuffle(l3) # 打乱顺序
# print(l1)
# print(l2)
# print(l3)
list=[]
for x in range(len(l3)): # l3最少,只有9条,所以遍历最多9次
list.append(l1[x]) #抽取的还是l1的内容
list.append(l2[x]) #抽取的还是l1的内容
list.append(l3[x]) #抽取的还是l1的内容
print(list)
# 每次抽取的都不一样
# 第一次['拔鸡毛', '爬行动物表演', '你投我挡', '高个子', '鳄鱼和猴子', '打水怪', '拉圈快走', '弟妹追拍', '击点', '猫头鹰抓田鼠', '骆驼运粮', '纱巾飞扬', '马术表演', '吸尘器', '流星球', '打高尔夫球', '大
# 蟒蛇', '瞄准投物', '贴人', '狗熊钻圈', '打保龄球', '走路的纸人', '甲壳虫', '打怪兽', '看谁不出圈', '刺猬背枣子', '套玩具']
# 第二次['看谁不出圈', '小花狗和小猕猴', '瞄准投物', '打高尔夫球', '动物与树林', '打怪兽', '贴人', '运水', '你投我挡', '拉圈快走', '五彩路', '流星球', '走路的纸人', '甲壳虫', '打水怪', '丢手绢', '狗熊钻
# 圈', '纱巾飞扬', '老狼老狼几点了', '大蟒蛇', '打保龄球', '猫头鹰抓田鼠', '鼠与猫', '套玩具', '快速占圈', '爬行动物表演', '击点']
# print('-------------第3步,做成AB结构的一串列表(abcadced) ----------------')
list_all=[]
# 第1周提取0和1
list_all.append(list[0])
list_all.append(list[1])
# print(list_all)
# 第2周提取2和0
list_all.append(list[2])
list_all.append(list[0])
print(list_all)
# # # 第3-X周提取3和2 (x和x-1)
for i in range(3,len(list)):
list_all.append(list[i])
list_all.append(list[i-1])
# print(list_all)
# print(len(list_all))
# print('-------------第4步,做成5天样式, ----------------')
list_all_all=[]
e=[]
h=[]
for i in range(0,len(list_all)):
c=list_all[i*2:i*2+2]
print(c)
for f in range(3): # 2天样式做成3次=6组
for d in range(len(c)):
e.append(c[d]) # 2天变成 6组样子
for g in range(0,len(e),6): # 0-e的个数 之间,每隔6,取一个数字 0 6 12 18
list_all_all.append(e[g:g+5])
# 第1周 索引0-5 (空掉5),第2周,索引6-11(空11)。索引间隔6,前一个数+5等于后一个数
print(list_all_all) # 现在是5个一组
# [['猫头鹰抓田鼠', '动物与树林', '猫头鹰抓田鼠', '动物与树林', '猫头鹰抓田鼠'],
# ['套玩具', '猫头鹰抓田鼠', '套玩具', '猫头鹰抓田鼠', '套玩具'],
# ['笃笃笃,卖糖粥', '套玩具', '笃笃笃,卖糖粥', '套玩具', '笃笃笃,卖糖粥'],
# ['鼠与猫', '笃笃笃,卖糖粥', '鼠与猫', '笃笃笃,卖糖粥', '鼠与猫'],
# ['击点', '鼠与猫', '击点', '鼠与猫', '击点'],
# ['老狼老狼几点了', '击点', '老狼老狼几点了', '击点', '老狼老狼几点了',]]
# # print('-------------第4步,拆分5天一组 工52组, ----------------')
for b in list_all_all[0:num]:
print(b)
# ['走路的纸人', '击点', '走路的纸人', '击点', '走路的纸人']
# ['动物与树林', '走路的纸人', '动物与树林', '走路的纸人', '动物与树林']
# ['打保龄球', '动物与树林', '打保龄球', '动物与树林', '打保龄球']
# ['好伙伴', '打保龄球', '好伙伴', '打保龄球', '好伙伴']
# ['狗熊钻圈', '好伙伴', '狗熊钻圈', '好伙伴', '狗熊钻圈']
# ['套玩具', '狗熊钻圈', '套玩具', '狗熊钻圈', '套玩具']
# ['拔鸡毛', '套玩具', '拔鸡毛', '套玩具', '拔鸡毛']
# ['骆驼运粮', '拔鸡毛', '骆驼运粮', '拔鸡毛', '骆驼运粮']
# print('-------------第4步,拆分2天一组 工52组, ----------------')
print('---------第4步:xls写入)------')
import xlwt
workbook = xlwt.Workbook()# 新建xls工作簿
sheet = workbook.add_sheet("中6班")# 新建xls工作簿的工作表的名字是sheet
# print('-------------第5步,写入EXCEL ----------------')
# dates=[]
# # for i in range(0,len(num)):
# for i in range(0,len(num)):
# print(i)
# n='大{}班'.format(num[i]) # 用遍历方法获得“大1班、大2班
# dates.append(n)
# print(dates)
# # 添加到列表
# row=1
# for d in range(0, len(dates)):
# sheet.write(row, 0, dates[d]) # 这里enumerate不能用,因为只有一列,所以就用
# row += 1
# 第0列 写入“第2周、第3周……第21周
dates=[]
# for i in range(0,len(num)):
for i in range(1,num+1):
print(i)
n="第{}周".format(i) # 用遍历方法获得“第1周、第2周、第21周”字样,
dates.append(n)
print(dates)
# 添加到列表
# 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
# 第B2开始写入 活动室内容
arrlan = len(list_all_all[0:num])# 只要列表数量中的20周
row = 1 # 第2行
for i in range(arrlan): #
for col,item in enumerate(list_all_all[i],1): # L2[i]=表格内的内容=item,索引数字=col
sheet.write(row,col,item) # row,col,item 行=1、列=索引数字、内容=表格内容 写入第一行第一列
row += 1
print('---------第5步:xls保存N份工作簿(每份一页)------')
try:
workbook.save(r"D:\test\02办公类\11集体游戏\分散运动一个班级(1周5天样式).xls") # 新建保存 只能xls
print('计划生成成功')
except e:
print('失败...')
print(e)
效果展示
5天样式1
5天样式2
批量随机抽取8个班级
1.多个班级的列表
2、遍历班级
3.工作表的名字
代码展示
'''
目的:自动从集体运动中抽取2个一组的项目 第1周 A B 第2周C A 第3周D C
数量:6个中班
作者:阿夏
时间:2023年3月16日
'''
print('-------------第1步,读取EXCLE 提取运动列表----------------')
import os
import xlrd
import random
num=int(input('一共几周?\n'))
banji=['中3','中4','中5','中6','中7','中8',]
datapath= r'D:\test\02办公类\11集体游戏\运动书的目录.xlsx' #存放图片的文件夹
x1 = xlrd.open_workbook(datapath)#读取excel
sheet1 = x1.sheet_by_name("中班基本运动抽取")#读取sheet1
idlist = sheet1.col_values(3)#第三列是运动名称存放第一列
print(idlist)
# ['运动', '长臂人', '马术表演', '看谁不出圈', '潜水员', '拔鸡毛', '好伙伴', '老狼老狼几点了', '筑路', '击泡泡', '走路的纸人', '跳路阶', '海上救援', '拉圈快走', '母鸡与小鸡', '踩脚印', '猫头鹰抓田
# 鼠', '我是滑稽人', '高个子', '快速占圈', '打高尔夫球', '穿越草地', '丢手绢', '笃笃笃,卖糖粥', '贴人', '鼠与猫', '有趣的通道', '骆驼运粮', '动物与树林', '爬行动物表演', '刺猬背枣子', '小花狗和小
# 猕猴', '狗熊钻圈', '五彩路', '吸尘器', '乌龟搬家', '弟妹追拍', '鳄鱼和猴子', '甲壳虫', '大蟒蛇', '运水', '纱巾飞扬', '流星球', '击点', '打怪兽', '打保龄球', '套玩具', '瞄准投物', '你投我挡', '打
# # 水怪']
# 提取目录,并打乱顺序
l1=idlist[1:25]# 按顺序抽取所有 ——1以走、跑、跳为主的活动,
# print(l1)
# ['长臂人', '马术表演', '看谁不出圈', '潜水员', '拔鸡毛', '好伙伴', '老狼老狼几点了', '筑路', '击泡泡', '走路的纸人', '跳路阶', '海上救援', '拉圈快走', '母鸡与小鸡', '踩脚印', '猫头鹰抓田鼠', '我
# 是滑稽人', '高个子', '快速占圈', '打高尔夫球', '穿越草地', '丢手绢', '笃笃笃,卖糖粥', '贴人']
l2=idlist[25:41]# 按顺序抽取所有——2以钻、攀爬为主的活动
# print(l2)
# ['鼠与猫', '有趣的通道', '骆驼运粮', '动物与树林', '爬行动物表演', '刺猬背枣子', '小花狗和小猕猴', '狗熊钻圈', '五彩路', '吸尘器', '乌龟搬家', '弟妹追拍', '鳄鱼和猴子', '甲壳虫', '大蟒蛇', '运水']
l3=idlist[41:50]# 按顺序抽取所有——3以投掷为主的活动
# print(l3)
# ['纱巾飞扬', '流星球', '击点', '打怪兽', '打保龄球', '套玩具', '瞄准投物', '你投我挡', '打水怪']
import xlwt
workbook = xlwt.Workbook()# 新建xls工作簿
print('-------------第2步,打乱3类中的运动项目前后顺序,循环抽取3个=2周 ----------------')
for w in range(len(banji)):
random.shuffle(l1) # 打乱顺序
random.shuffle(l2) # 打乱顺序
random.shuffle(l3) # 打乱顺序
# print(l1)
# print(l2)
# print(l3)
list=[]
for x in range(len(l3)): # l3最少,只有9条,所以遍历最多9次
list.append(l1[x]) #抽取的还是l1的内容
list.append(l2[x]) #抽取的还是l1的内容
list.append(l3[x]) #抽取的还是l1的内容
print(list)
# 每次抽取的都不一样
# 第一次['拔鸡毛', '爬行动物表演', '你投我挡', '高个子', '鳄鱼和猴子', '打水怪', '拉圈快走', '弟妹追拍', '击点', '猫头鹰抓田鼠', '骆驼运粮', '纱巾飞扬', '马术表演', '吸尘器', '流星球', '打高尔夫球', '大
# 蟒蛇', '瞄准投物', '贴人', '狗熊钻圈', '打保龄球', '走路的纸人', '甲壳虫', '打怪兽', '看谁不出圈', '刺猬背枣子', '套玩具']
# 第二次['看谁不出圈', '小花狗和小猕猴', '瞄准投物', '打高尔夫球', '动物与树林', '打怪兽', '贴人', '运水', '你投我挡', '拉圈快走', '五彩路', '流星球', '走路的纸人', '甲壳虫', '打水怪', '丢手绢', '狗熊钻
# 圈', '纱巾飞扬', '老狼老狼几点了', '大蟒蛇', '打保龄球', '猫头鹰抓田鼠', '鼠与猫', '套玩具', '快速占圈', '爬行动物表演', '击点']
# print('-------------第3步,做成AB结构的一串列表(abcadced) ----------------')
list_all=[]
# 第1周提取0和1
list_all.append(list[0])
list_all.append(list[1])
# print(list_all)
# 第2周提取2和0
list_all.append(list[2])
list_all.append(list[0])
print(list_all)
# # # 第3-X周提取3和2 (x和x-1)
for i in range(3,len(list)):
list_all.append(list[i])
list_all.append(list[i-1])
# print(list_all)
# print(len(list_all))
# print('-------------第4步,做成5天样式, ----------------')
list_all_all=[]
e=[]
h=[]
for i in range(0,len(list_all)):
c=list_all[i*2:i*2+2]
print(c)
for f in range(3): # 2天样式做成3次=6组
for d in range(len(c)):
e.append(c[d]) # 2天变成 6组样子
for g in range(0,len(e),6): # 0-e的个数 之间,每隔6,取一个数字 0 6 12 18
list_all_all.append(e[g:g+5])
# 第1周 索引0-5 (空掉5),第2周,索引6-11(空11)。索引间隔6,前一个数+5等于后一个数
print(list_all_all) # 现在是5个一组
# [['猫头鹰抓田鼠', '动物与树林', '猫头鹰抓田鼠', '动物与树林', '猫头鹰抓田鼠'],
# ['套玩具', '猫头鹰抓田鼠', '套玩具', '猫头鹰抓田鼠', '套玩具'],
# ['笃笃笃,卖糖粥', '套玩具', '笃笃笃,卖糖粥', '套玩具', '笃笃笃,卖糖粥'],
# ['鼠与猫', '笃笃笃,卖糖粥', '鼠与猫', '笃笃笃,卖糖粥', '鼠与猫'],
# ['击点', '鼠与猫', '击点', '鼠与猫', '击点'],
# ['老狼老狼几点了', '击点', '老狼老狼几点了', '击点', '老狼老狼几点了',]]
# # print('-------------第4步,拆分5天一组 工52组, ----------------')
for b in list_all_all[0:num]:
print(b)
# ['走路的纸人', '击点', '走路的纸人', '击点', '走路的纸人']
# ['动物与树林', '走路的纸人', '动物与树林', '走路的纸人', '动物与树林']
# ['打保龄球', '动物与树林', '打保龄球', '动物与树林', '打保龄球']
# ['好伙伴', '打保龄球', '好伙伴', '打保龄球', '好伙伴']
# ['狗熊钻圈', '好伙伴', '狗熊钻圈', '好伙伴', '狗熊钻圈']
# ['套玩具', '狗熊钻圈', '套玩具', '狗熊钻圈', '套玩具']
# ['拔鸡毛', '套玩具', '拔鸡毛', '套玩具', '拔鸡毛']
# ['骆驼运粮', '拔鸡毛', '骆驼运粮', '拔鸡毛', '骆驼运粮']
# print('-------------第4步,拆分2天一组 工52组, ----------------')
print('---------第4步:xls写入)------')
sheet = workbook.add_sheet("{}班集体运动填写".format(banji[w]))# 新建xls工作簿的工作表的名字是sheet
# print('-------------第5步,写入EXCEL ----------------')
# dates=[]
# # for i in range(0,len(num)):
# for i in range(0,len(num)):
# print(i)
# n='大{}班'.format(num[i]) # 用遍历方法获得“大1班、大2班
# dates.append(n)
# print(dates)
# # 添加到列表
# row=1
# for d in range(0, len(dates)):
# sheet.write(row, 0, dates[d]) # 这里enumerate不能用,因为只有一列,所以就用
# row += 1
# 第0列 写入“第2周、第3周……第21周
dates=[]
# for i in range(0,len(num)):
for i in range(1,num+1):
print(i)
n="第{}周".format(i) # 用遍历方法获得“第1周、第2周、第21周”字样,
dates.append(n)
print(dates)
# 添加到列表
# 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
# 第B2开始写入 活动室内容
arrlan = len(list_all_all[0:num])# 只要列表数量中的20周
row = 1 # 第2行
for i in range(arrlan): #
for col,item in enumerate(list_all_all[i],1): # L2[i]=表格内的内容=item,索引数字=col
sheet.write(row,col,item) # row,col,item 行=1、列=索引数字、内容=表格内容 写入第一行第一列
row += 1
print('---------第5步:xls保存N份工作簿(每份一页)------')
try:
workbook.save(r"D:\test\02办公类\11集体游戏\周计划中班集体运动填写(2023.2-2023.6).xls") # 新建保存 只能xls
print('计划生成成功')
except e:
print('失败...')
print(e)
八个班级的批量效果
反馈:发给其他老师使用
感悟:
1、每周都要做的周计划时,各种琐碎零散信息需要花时间,而在黏贴过程中,大量的格式修正,让人烦躁,更容易出现内容的错误。
2、有了编程,可以把零散信息归纳整合,直接统一批量20周周计划的所有板块信息(EXCEL制作导入),其规范化的格式不容易出错、其反复调试生成的功能更是大幅工作提高效率。
3、Python批量功能,可以让我从琐碎繁杂的任务中解脱出来,去做更有价值、更创新的工作。
20230317优化调整:
1、太长的运动项目名称删除
因为5天表格(宋体5号)的列宽限制,所以每个格子最多写7个词。因此要把一些太长的运动名称隐藏
(中班的项目中没有超过7的名称,大班的项目有“唐蹭、孙悟空、白骨精”需要隐藏
2、需要写技能点。光看名字不一定知道是什么?
需要添加颜色变化,了解项目属于“走跑跳”“攀爬”“投掷”哪一种?