结果展示--笔画数统计
背景需求
中6班幼儿都能够书写学号(基本没有镜像了),于是我开始尝试让幼儿熟悉自己的“姓氏”,并书写姓氏(单字)。4位幼儿能够默写全名,3位幼儿可以默写名字中的某一个字。
但如果有样板,幼儿可以尝试照着“”画名字“”。
每位孩子都尝试根据已有文字,写或画了自己的名字。从字形结构来看,我在想:孩子们的写字的笔画顺序是否正确呢?
由于我自平时都是电脑键盘输入或手机语音输入,几乎已经不会写汉字了(o(╥﹏╥)o),根本搞不清楚自己的笔画顺序是否正确。
于是,我想通过“笔画网”的图示,下载幼儿姓名中文字的具体笔画顺序(第3笔是丿,第5笔是横折钩)
具体思路:
1、从“比邻词典”输入
2、比邻词典”链接
《李》字笔顺、笔画 - 李字怎么写?
3、制作幼儿名单(2字、3字、4字)
4、使用UIBOT程序,批量下载(不知道Python不能运行)
UiBot开发的RPA机器人源代码是由UiBot官方团队自己研发的一套语言命令。底层命令由python、C#等语言组成。UiBot兼容性比较好,支持C、Lua、Python、.Net 扩展插件及第三方SDK接入。
Dim objExcelWorkBook,arrayRet,iRet,temp,行,sRet,sText,名称前面,arrElement,objPoint,dictScrollPostion,objRect,bRet
objExcelWorkBook = Excel.OpenExcel('''C:\Users\jg2yXRZ\OneDrive\桌面\下载笔画\幼儿姓名笔画范例.xlsx''',true,"Excel","","")
File.CreateFolder('''C:\Users\jg2yXRZ\OneDrive\桌面\下载笔画\演示名字图片''')
路径 = '''C:\Users\jg2yXRZ\OneDrive\桌面\下载笔画\演示名字图片'''
区域=Excel.ReadRange(objExcelWorkBook,"Sheet1","A2:B5",true)
行=UBound(区域)
TracePrint(行)
Rem 网页开着75%
// https://bihua.bi0.cn/96E8__bishun.html
For i = 0 To 行 step 1
// TracePrint(区域[i])
名称 = 区域[i][0]&'-'&区域[i][1]
TracePrint(区域[i][1])
字数=Len(区域[i][1])
TracePrint(字数)
For ii = 1 To 字数 step 1
单字=StrGetAt(区域[i][1],ii)
// TracePrint(单字)
名称前面 = Format("%02d",i+1)&'-'&Format("%02d",ii)&'-'&单字&'-'
TracePrint(名称前面)
Rem 查找笔画
Keyboard.InputText(@ui"输入控件<input>",单字,true,20,10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 500, "bSetForeground": true, "sSimulate": "message", "bValidate": false, "bClickBeforeInput": false})
Mouse.Move(957, 208, false,{"iDelayAfter": 300, "iDelayBefore": 200})
Mouse.Click("left", "click", [],{"iDelayAfter": 300, "iDelayBefore": 300})
Delay(2000)
笔画总数 = UiElement.GetValue(@ui"表格单元<td>_102",{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})
// TracePrint(笔画总数)
名称后面 = 名称前面&笔画总数
// TracePrint(名称后面)
Rem 锚定下载
LocalOCR.Hover(@ui"块级元素<div>_夏字笔画写法1",{"x":29,"y":2,"width":69,"height":27},"笔画写法","instr",1,10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate"})
Keyboard.Press("Down", "press", [],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})
Mouse.Click("right", "click", [],{"iDelayAfter": 300, "iDelayBefore": 300})
Keyboard.Press("Down", "press", [],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})
Keyboard.Press("Down", "press", [],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})
Keyboard.Press("Enter", "press", [],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})
Keyboard.Press("Backspace", "press", [],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})
Keyboard.InputText(@ui"窗口1",路径&'\\'&名称后面,true,20,10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 500, "bSetForeground": true, "sSimulate": "message", "bValidate": false, "bClickBeforeInput": false})
Mouse.Move(583, 446, false,{"iDelayAfter": 300, "iDelayBefore": 200})
Mouse.Click("left", "click", [],{"iDelayAfter": 300, "iDelayBefore": 300})
Delay(3000)
Keyboard.Press("Up", "press", [],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})
Keyboard.Press("Up", "press", [],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})
Delay(5000)
Next
Next
Excel.CloseExcel(objExcelWorkBook,true)
5、运行过程展示
视频
6、运行结果展示
办公思考:
1、查找笔画最多的名字:那些孩子的姓氏+名字中的笔画很多(相对难写)
2、查找单个笔画多的字,一位幼儿的名字中,哪一个字相对难写(笔画多)
确定几个人的名字(4人)
重点:提取文件名上的四类信息
'''
目的:把名字图片上的笔画总数加起来 笔画谁最多
作者:阿夏
日期:2023年05月26日 21:54
'''
import os
import time
import xlrd
hang=int(input('一共几个孩子(4人)\n'))
address = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载笔画\演示名字图片'#存放图片的文件夹
# datapath = 'D:/目录.xlsx'#excel表路径
print('--------1、先把文件名变成数字----------')
fileList=os.listdir(address )
# print(fileList)
sn_all=[]
n_all=[]
ks_all=[]
# # 全部路径
# path = r'C:\Users\jg2yXRZ\OneDrive\桌面\中6姓名笔画总数\*'
# for file_abs in glob.glob(path):
# print(file_abs)
for file in fileList:
split_str = file.split('-') # 切割符号
# 学号
student_number = split_str[0] # 学号
# print(student_number)
name= split_str[2] # 名字(单字)
stroke_number= split_str[3] # 笔画数+.png
# print(stroke_number[:-4])# 数量(排除最后的.png)
sn_all.append(student_number) # 学号列表
n_all.append(name) # 名字列表(单字列表)
ks_all.append(stroke_number[:-4])# 笔画数列表
# print(len(ks_all))
# print(len(sn_all))
# print(len(n_all))
# print(m)
# ['01', '01', '01', '02', '02', '02', '03', '03', '03', '04', '04', '05', '05', '05', '06', '06', '06', '07', '07', '07', '08', '08', '08', '09', '09', '09', '10', '10', '10', '11', '11', '11', '12', '12', '12', '13', '13', '13', '14', '14', '14', '15', '15', '15', '16', '16', '16', '17', '17', '17', '18', '18', '18', '19', '19', '20', '20', '20', '21', '21', '21', '22', '22', '22', '23', '23', '23', '24', '24', '24', '25', '25', '25', '26', '26', '26', '27', '27', '27', '28', '28', '28']
# print(n)
# ['10', '5', '10', '6', '7', '8', '4', '4', '12', '10', '4', '8', '8', '13', '6', '13', '11', '7', '4', '10', '9', '11', '8', '7', '11', '13', '14', '8', '14', '11', '12', '10', '7', '16', '11', '7', '13', '1', '9', '10', '12', '10', '6', '1', '7', '12', '11', '11', '1', '4', '7', '10', '12', '7', '12', '6', '12', '8', '10', '12', '7', '11', '13', '5', '12',
# '12', '12', '9', '7', '8', '3', '4', '8', '4', '8', '8', '7', '3', '8', '9', '9', '8']
# print(k)
print('-----------三个字笔画最多-----------')
# 三个字合计的统计(从小到大)
# 查找几个数字=01,对应笔画数加在一起
sy=[]
sy_all=[]
for i in range(1,hang+1): # 一共28人
sy.clear()
cz_number='%02d'%i
# print('%02d'%i)
# 01
for x in sn_all: # 在学号列表中遍历
if x==cz_number: # 如果01==01,就合并为一个列表
sy.append(x)
# print(len(sy))
sy_all.append(len(sy))
# print(sy_all)
# # [3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3] 提取的索引位置
sy_all.insert (0, '0') # 最前面加0
print(sy_all)
# 01号是3个名字、04号是4个名字
# ['0', 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3]
# 索引数字累加
sy_plus=0
sy_plus_all=[]
# 索引取值数字的确定
for y in sy_all:
sy_plus +=int(y)
# print(sy_plus)
sy_plus_all.append(sy_plus)
# print(sy_plus_all)
# [0, 3, 6, 9, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82]
# ks_all笔画数列表中,取0-3 3-6,6-9(3)。9-11(2)
name_three_all=[]
name_all_all=[]
for z in range(int(len(sy_plus_all)-1)):
q=ks_all[sy_plus_all[z]:sy_plus_all[z+1]]
# print(q)
# ['10', '5', '10']
# ['6', '7', '8']
# 转字符
zifu=[int(u) for u in q]
print(zifu)
# [10, 5, 10]
# [6, 7, 8]
# 三个数字加一起
print(sum(zifu))
# 25
# 21
# 三个名字拼在一起
long_name=n_all[sy_plus_all[z]:sy_plus_all[z+1]]
# ['张','三']
name_all=''.join(long_name)
# ['张三']
print(name_all)
name_all_all.append(name_all) # 三个名字的合集列表
# 生成结果 三个名字笔画最多到笔画最少
h='{}笔 学号"{}{}"的笔画'.format('%02d'%(sum(zifu)),'%02d'%(z+1),name_all_all[z])
# print('{}笔 学号{}的笔画:'.format(sum(zifu),'%02d'%(z+1)))
name_three_all.append(h)
# name_three_all.sort() # 笔画少 到 笔画多
name_three_all.sort(reverse=True)# 笔画多 到 笔画少
# print(name_three_all)
print('---------全部名字笔画总数的统计(多到少)----------')
# 变成竖式
for zz in range(len(name_three_all)):
print('序号{} {}'.format('%02d'%(zz+1),name_three_all[zz]))
print('-----------单个字笔画最多-----------')
# for sn_all.append(student_number) # 学号列表
# n_all.append(name) # 名字列表(单字列表)
# ks_all.append(stroke_number[:-4])# 笔画数列表
name_one_all=[]
for v in range(len(n_all)): # 82条
k='{}笔 学号"{}{}"的笔画'.format('%02d'%(int(ks_all[v])),str(sn_all[v]),n_all[v])
# # name_all_all[v])
# # print('{}笔 学号{}的笔画:'.format(sum(zifu),'%02d'%(z+1)))
# print(k)
name_one_all.append(k)
name_one_all.sort() # 笔画少 到 笔画多
# name_one_all.sort(reverse=True)# 笔画多 到 笔画少
# print(name_one_all)
print('---------单个名字笔画数量的统计(多到少)----------')
# 变成竖式
for aa in range(len(name_one_all)):
print('序号{} {}'.format('%02d'%(aa+1),name_one_all[aa]))
终端显示
感悟:
用这种方法,可以直接看到那些孩子的3个名字笔画总数最多,
那些孩子的单个名字笔画最多。