【办公类-21-01】Python制作每周轮换的“幼儿座位表”

效果展示

背景需求:

  1. 保护视力,每周换座

为了保护视力,中六班的座位以小组为单位,每周轮换一次。我当了两周班主任,每周一看到孩子们自主调换座位,幼儿之间互相提示新座位在哪里,展现出一定的自主性。

问题:每周换座位,我有点搞不清孩子的座位。

2.领取工具,随机邀请

学习活动前需要拿记号笔、蜡笔等材料。并没有安排小组长,因此每次都是老师随机在每组中选择一位孩子按当天到场的小组成员人数拿取材料。每组举手的孩子很多,没有被选到,纷纷抱怨:“很久没有请到我了!”“我也想拿笔!”“我一次也没有轮到过!”

问题:随机邀请,有的人没有请过,有的孩子多请了,一定会出现多寡不均。

3.图书管理,规则多变

午餐后,速度最快的三位孩子当老师发书阅读,一段时间后,前三的孩子不太乐意发书了“我今天不想发书”。有些慢的孩子趁机要求“我很久没有发书了,以前(退休的)X老师在的时候,也会让没有发过书的小朋友发书!”“我也想发书!我今天发了,明天就不发了!”我被他们多元的要求,搞得头疼。到底谁来发书,也需要固定、灵活,但相对公平的规则,让每位孩子都得到机会(不要回家对家长抱怨老师没有给过机会)

问题:如何制定发书人的选择规则。尽量保证想发书的孩子每2周一次都有机会。(每天3人)

实用需求——轮换座位表

打印座位表,将参与某项活动的孩子学号进行打钩,参与过某项的孩子后续不邀请,这样就能通过量化实现机会均等。(对孩子和家长都有所交代)

实现过程

word样式

代码重点:

  1. 确定现有第5周的座位名单(两位数字的学号——

备注:学号0代表这两个位置无人就坐。4组6人=24人、1组4人=4人,共28人)

  1. 确定每一组的坐标出现顺序及坐标(XY)数字(括号里面的是坐标数字)

第5周 每组幼儿学号的排序方法

手动输入单元格坐标(30格,手动填写更快)

代码展示:

'''
座位变化。每天平均选人
五周循环-多周-6到10周
'''
# 制作学号
# a=[]
# for i in range(1,29):
#     b=str('%02d'%i)
#     a.append(b)
# print(a)
# ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28']

# 顺时针选人(学号)以第5周座位样式为基础
z1=[' ','06', '01',' ','22','03']
z2=['15','12','11','18','19','04']
z3=['02','21','17','13','07','10']
z4=['16','08','23','05','25','14']
z5=['27','09','20','24','26','28']

zz=[z1,z2,z3,z4,z5]
# print(zz)
# [[' ', '06', '01', ' ', '22', '03'], ['15', '12', '11', '18', '19', '04'], ['02', '21', '17', '13', '07', '10'], ['16', '08', '23', '05', '25', '14'], ['27', '09', '20', '24', '26', '28']]

list1=[]
list2=[]

# 循环五次
for i in range(5):    # 5周循环
    # zz.pop(0) # 删除第一个
    c=zz.pop(0)    # 删除最后一个
    # print(c)
    zz.append(c)
    # print(zz)
# 6-10周
# [['15', '12', '11', '18', '19', '04'], ['02', '21', '17', '13', '07', '10'], ['16', '08', '23', '05', '25', '14'], ['27', '09', '20', '24', '26', '28'], [' ', '06', '01', ' ', '22', '03']]
# [['02', '21', '17', '13', '07', '10'], ['16', '08', '23', '05', '25', '14'], ['27', '09', '20', '24', '26', '28'], [' ', '06', '01', ' ', '22', '03'], ['15', '12', '11', '18', '19', '04']]
# [['16', '08', '23', '05', '25', '14'], ['27', '09', '20', '24', '26', '28'], [' ', '06', '01', ' ', '22', '03'], ['15', '12', '11', '18', '19', '04'], ['02', '21', '17', '13', '07', '10']]
# [['27', '09', '20', '24', '26', '28'], [' ', '06', '01', ' ', '22', '03'], ['15', '12', '11', '18', '19', '04'], ['02', '21', '17', '13', '07', '10'], ['16', '08', '23', '05', '25', '14']]
# [[' ', '06', '01', ' ', '22', '03'], ['15', '12', '11', '18', '19', '04'], ['02', '21', '17', '13', '07', '10'], ['16', '08', '23', '05', '25', '14'], ['27', '09', '20', '24', '26', '28']]
    # 变成单个数字

 
    for x in zz:
        for y in x:
            # print(y)
            list2.append(y)
# print(list2)
# ['15', '12', '11', '18', '19', '04', '02', '21', '17', '13', '07', '10', '16', '08', '23', '05', '25', '14', '27', '09', '20', '24', '26', '28', ' ', '06', '01', ' ', '22', '03', '02', '21', '17', '13', '07', '10', '16', '08', '23', '05', '25', '14', '27', '09', '20', '24', '26', '28', ' ', '06', '01', ' ', '22', '03', '15', '12', '11', '18', '19', '04', '16', '08', '23', '05', '25', '14', '27', '09', '20', '24', '26', '28', ' ', '06', '01', ' ', '22', '03', '15', '12', '11', '18', '19', '04', '02', '21', '17', '13', '07', '10', '27', '09', '20', '24', '26', '28', ' ', '06', 
# '01', ' ', '22', '03', '15', '12', '11', '18', '19', '04', '02', '21', '17', '13', '07', '10', '16', '08', '23', '05', '25', '14', ' ', '06', '01', ' ', '22', '03', '15', '12', '11', '18', '19', '04', '02', '21', '17', '13', '07', '10', '16', '08', '23', '05', '25', '14', '27', '09', '20', '24', '26', '28']
# print(len(list2))  # 150  

list=[]
for r in range(5):
    list.append(list2[r*30:r*30+30])
print(list)
# [['15', '12', '11', '18', '19', '04', '02', '21', '17', '13', '07', '10', '16', '08', '23', '05', '25', '14', '27', '09', '20', '24', '26', '28', ' ', '06', '01', ' ', '22', '03'], 
# ['02', '21', '17', '13', '07', '10', '16', '08', '23', '05', '25', '14', '27', '09', '20', '24', '26', '28', ' ', '06', '01', ' ', '22', '03', '15', '12', '11', '18', '19', '04'],
# ['16', '08', '23', '05', '25', '14', '27', '09', '20', '24', '26', '28', ' ', '06', '01', ' ', '22', '03', '15', '12', '11', '18', '19', '04', '02', '21', '17', '13', '07', '10'], 
# ['27', '09', '20', '24', '26', '28', ' ', '06', '01', ' ', '22', '03', '15', '12', '11', '18', '19', '04', '02', '21', '17', '13', '07', '10', '16', '08', '23', '05', '25', '14'], 
# [' ', '06', '01', ' ', '22', '03', '15', '12', '11', '18', '19', '04', '02', '21', '17', '13', '07', '10', '16', '08', '23', '05', '25', '14', '27', '09', '20', '24', '26', '28']]

print(len(list))# 一共5组


print('----------在指定单元格内写入学号 ------------')
import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,time

import docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn


from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor

doc = Document(r'D:\test\02办公类\99座位变化\座位模板.docx') 

for zzz in range(5):   #多少份
    
    table = doc.tables[zzz]       # 一共五个表格
       
    #  确定8*4表格的表格单元格坐标(如第1行第1格是0,0 ,第2行第3格是(1,2)   
    # 单元格索引制作
    # 做一堆的'',
    # bg=[]
    # for x in range(1,6):
    #     for i in range(6):
    #         a=''
    #         bg.append(a)
    #         b='bg{}='.format(x)        
    #     print('{}{}'.format(b,bg))
    #     bg.clear()
    # bg1=['', '', '', '', '', '']
    # bg2=['', '', '', '', '', '']
    # bg3=['', '', '', '', '', '']
    # bg4=['', '', '', '', '', '']
    # bg5=['', '', '', '', '', '']

    # 手动输入单元格索引数字 因为超过了10,所以都是2位数
    bg1=['0106', '0205', '0204', '0103', '0004', '0005']
    bg2=['0607', '0506', '0406', '0307', '0408', '0508']
    bg3=['1107', '1006', '0906', '0807', '0908', '1008']
    bg4=['0802', '0903', '1003', '1102', '1001', '0901']
    bg5=['0302', '0403', '0503', '0602', '0501', '0401']

    bg=bg1+bg2+bg3+bg4+bg5
    # print(bg)
    # ['00', '01', '02', '03', '04', '05', '06', '07', '10', '11', '12', '13', '14', '15', '16', '17', '20', '21', '22', '23', '24', '25', '26', '27', '30', '31', '32', '33', '34', '35', '36', '37']
    
    # 提取表格单元格坐标和图形的坐标
    for t in range(0,len(bg)):             # 图案的长度为8*4=32个    遍历0-32(32个)
        pp=int(bg[t][0:2])     # 提取表格bg里面每个元素的第0个数字==单元格X坐标  t=索引数字
        qq=int(bg[t][2:4])
        k=list[zzz][t]                  # 提取list图案列表里面每个图形  t=索引数字
        print(pp,qq,k)

        run=table.cell(pp,qq).paragraphs[0].add_run(k)    # 在单元格0,0(第1行第1列)输入第0个图图案
        run.font.name = '黑体'#输入时默认华文琥珀字体
        run.font.size = Pt(10)  #输入字体大小默认30号
        run.font.bold=True
        run.font.color.rgb = RGBColor(0,0,0) #设置颜色浅灰
        # cell.text =u""
        r = run._element
        r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
        table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中     

doc.save('D:/test/02办公类/99座位变化/中6座位表(多周).docx')#保存为XX学号的电话号码word     

 

终端显示

作品展示

打印时就没有这些回车符号了

感悟:

利用Python生成座位表,为教育公平提供助力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿夏reasonsummer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值