【办公类-20-01】从参考用书《运动》目录中洗牌提取《周计划-集体运动》填写内容(周计划系列)

文章描述了一个使用Python从Excel目录中抽取运动项目,生成随机不重复的周计划模板的过程。代码实现了从特定类别中抽取运动项目,打乱顺序,然后组合成适合周计划的格式,包括2天和5天的样式,并可扩展到多个班级。最终将内容写入Excel表格,提高了工作效率。
摘要由CSDN通过智能技术生成

背景需求:

新的周计划模板上有一个“运动-集体游戏”栏目。内容来自参考用书《运动》

根据新要求,周一的运动集体游戏必须是新的,周二的运动集体游戏来自前一周的内容,因此可以判定写法如下:

星期

星期一

星期二

星期三

星期四

星期五

第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、需要写技能点。光看名字不一定知道是什么?

需要添加颜色变化,了解项目属于“走跑跳”“攀爬”“投掷”哪一种?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值