效果展示
背景需求:
保护视力,每周换座
为了保护视力,中六班的座位以小组为单位,每周轮换一次。我当了两周班主任,每周一看到孩子们自主调换座位,幼儿之间互相提示新座位在哪里,展现出一定的自主性。
问题:每周换座位,我有点搞不清孩子的座位。
2.领取工具,随机邀请
学习活动前需要拿记号笔、蜡笔等材料。并没有安排小组长,因此每次都是老师随机在每组中选择一位孩子按当天到场的小组成员人数拿取材料。每组举手的孩子很多,没有被选到,纷纷抱怨:“很久没有请到我了!”“我也想拿笔!”“我一次也没有轮到过!”
问题:随机邀请,有的人没有请过,有的孩子多请了,一定会出现多寡不均。
3.图书管理,规则多变
午餐后,速度最快的三位孩子当老师发书阅读,一段时间后,前三的孩子不太乐意发书了“我今天不想发书”。有些慢的孩子趁机要求“我很久没有发书了,以前(退休的)X老师在的时候,也会让没有发过书的小朋友发书!”“我也想发书!我今天发了,明天就不发了!”我被他们多元的要求,搞得头疼。到底谁来发书,也需要固定、灵活,但相对公平的规则,让每位孩子都得到机会(不要回家对家长抱怨老师没有给过机会)
问题:如何制定发书人的选择规则。尽量保证想发书的孩子每2周一次都有机会。(每天3人)
实用需求——轮换座位表
打印座位表,将参与某项活动的孩子学号进行打钩,参与过某项的孩子后续不邀请,这样就能通过量化实现机会均等。(对孩子和家长都有所交代)
实现过程
word样式
代码重点:
- 确定现有第5周的座位名单(两位数字的学号——
备注:学号0代表这两个位置无人就坐。4组6人=24人、1组4人=4人,共28人)
- 确定每一组的坐标出现顺序及坐标(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
终端显示
作品展示
打印时就没有这些回车符号了