【办公类-51-01】月评估数字生成01-平均数空值

期末需要制作月评估,每月给孩子的能力水平打分。

以前我是做在EXCEL里,手动打分,然后用公式计算1、2、3出现的个数,然后计算平均数,最后复制到Word里。

因为是手动计算,每次都要算很长时间,确保逐月的分数平均值增加

第1个月是1.0-1.5,第2个月在1.5-2.0之间,,第3个月在2.0-2.5,第4个月在2.5-3.0之间

于是我想,是否可以用Python自动按照比例在指定的Word单元格里输入1,2,3数字,并计算个数和平均值。。

经过三天实验,终于作出了一份

素材准备:

word第一页是评估表、第二页是参考目标,第三页是分页符生成的一个空行回车

代码展示

# -*- coding: utf-8 -*-'''
目的:自动生成2-6月幼儿能力评估的打分(按比例生成) 1-12 13-14
工具:星火讯飞,阿夏
时间:2024年6月22日
'''import os
import random
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt
from docx.enum.text import WD_UNDERLINEdate=['2、3','4','5','6']
# 抽取比例比如1抽取60%,2抽取40%、3抽取0%
bl=[[60,40,0],[40,50,10],[20,60,20],[0,20,80]]wz=['孩子们大部分思维活跃,因此在区角活动中明显发现与动手操作活动中的活跃气氛相比,幼儿对于安静的活动(扣扣子、夹豆子、阅读)等兴趣不高,主动参与图书阅读活动的幼儿不多,很多幼儿快速翻完书本后就使用书作为道具开展其他动作游戏的道具,对于画面的解读能力偏弱,会对幼儿的逻辑思维、语言表达能力产生不利影响。因此我们以“小青蛙故事比赛”为契机,家园合作引导幼儿进行书本阅读和看图编故事的活动。孩子们都愿意通过阅读,结合动作、语言、歌曲进行表演活动,我们将继续引导幼儿开展相关阅读表演活动。',
'本月我们通过《周围的人》《幼儿园里朋友多》等主题引导孩子认识社会,在社会实践、家园共育、教育教学等活动下,孩子们逐渐积累关于周围各种不同职业的人的特点和相关信息,提高孩子对成人职业的认识。让幼儿了解社会成员的工作与我们的关系,并尊重他们的劳动。关心、热爱、尊重周围的人们。本月幼儿对自主午餐活动非常兴趣,他们尝试自己取碗筷、盛饭盛菜,这些都让孩子们感到很新奇。“老师你看我把自己盛的饭菜都吃光了!”自主午餐对中班孩子来说是非常有利的。',
'部分孩子在与同伴交往过程中产生了矛盾冲突,产生了愤怒、暴躁、倾诉等行为;部分孩子的情绪容易兴奋,难以迅速平静下来;部分孩子在因为他人的评价而产生自卑感……中班幼儿期是情绪发展最迅速和最关键的时期,面对全体幼儿不同的情绪问题,本学期我们将使用paths情绪课程来引导幼儿建立正确的情绪自我评价意识。本月引导幼儿正确认识正面和负面情绪,接受自己的情绪变化,并在情景中感知面对自己的各种情绪该如何处理才最恰当。很多孩子通过经验回忆,描述了自己对生气、愤怒、狂笑等情绪的体验,通过讨论梳理出一些应对方法。',
'本月对孩子们发展目标进行了观察和统计,除了一些长期病假的孩子以外,其他的孩子的数值都在原有基础有所提高,特别是阅读兴趣、情绪管理、自我服务的能力有了明显的提升,孩子们对于在人际关系中常见的“和朋友吵架了怎么办?”有了许多自己独特的解决方法。同时也发现个别特殊儿童的生活自理(自主午餐、自我服务)、手脑协调、语言表达能力都有明显的提高。下学期,我们将在关注幼儿集体发展的基础上,继续关注个别幼儿的发展情况,帮助幼儿个性化成长。'
]
print(len(wz))
# path=r'C:\Users\jg2yXRZ\OneDrive\桌面\月评估'
for num in range(5):for x in range(len(bl)):# 缺的学号q=[1,7]# 评价条数 确保表格有足够多的行数bs=['0315','1516']    # 2-14列# 人数,确保表格有足够多的行数r=31# b=[]def delete_numbers(table, row_start, col_start, col_end):for cell in table.rows[row_start - 1].cells[col_start - 1:col_end]:cell.text = ""def fill_random_numbers(table, row_start, row_end, col_start, col_end):for row in table.rows[row_start - 1:row_end]:for cell in row.cells[col_start - 1:col_end]:cell.text = str(random.choices([1, 2,3], weights=[bl[x][0],bl[x][1],bl[x][2]], k=1)[0])paragraph = cell.paragraphs[0]paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTERdef count_ones(table, row_start, col_start, row_end):count = 0for row in table.rows[row_start - 1:row_end]:cell = row.cells[col_start - 1]if cell.text == "1":count += 1return countdef count_twos(table, row_start, col_start, row_end):count = 0for row in table.rows[row_start - 1:row_end]:cell = row.cells[col_start - 1]if cell.text == "2":count += 1return countdef count_threes(table, row_start, col_start, row_end):count = 0for row in table.rows[row_start - 1:row_end]:cell = row.cells[col_start - 1]if cell.text == "3":count += 1return countdef calculate_average(table, row_start, col_start, row_end):        total = 0count = 0for row in table.rows[row_start - 1:row_end]:cell = row.cells[col_start - 1]if cell.text != "":total += float(cell.text)  # 将文本转换为浮点数进行计算count += 1else:passreturn round(total / count, 1)def calculate_average(table, row_start, col_start, row_end, clear_cells=False):total = 0count = 0for row in table.rows[row_start - 1:row_end]:cell = row.cells[col_start - 1]if cell.text != "":total += float(cell.text)  # 将文本转换为浮点数进行计算count += 1else:passaverage = round(total / count, 1)total=0count=0return averagedef main():import timepath=r'C:\Users\jg2yXRZ\OneDrive\桌面\月评估'input_file = path+r"\模板 月评估.docx"new_folder=path+r'\零时文件夹'       os.makedirs(new_folder, exist_ok=True)output_file=new_folder+fr"\{x}.docx"# 读取输入文件doc = Document(input_file)# 获取第一个表格table = doc.tables[0]# 插入文字# 在指定的单元格(23,0)里插入文字cell = table.cell(r+6-1, 2)  # 注意索引从0开始,所以需要减1# 在单元格中写入文字cell.text ='    '+wz[x]# 获取第二段 插入月份paragraph = doc.paragraphs[1]# 在段落中添加文本和下划线run1 = paragraph.add_run("  "+date[x]+" ")run1.font.underline = WD_UNDERLINE.SINGLErun2 = paragraph.add_run(" 月 ")run3 = paragraph.add_run("   中(4) ")run3.font.underline = WD_UNDERLINE.SINGLErun4 = paragraph.add_run("班")   for  b in bs:b1=int(b[0:2])b2=int(b[2:4])               # paragraph.text = new_text# 单元格(table, 第2行, 第32行, 第10列, 第14列)# 填充随机数字fill_random_numbers(table, 2, r+1, b1, b2)# 删除第一行中第2格子到第17格子里面的数字for qq in q:delete_numbers(table, qq+1, 2, b2+1)# 计算个数# 遍历每一列,统计数字1的个数并填入对应的单元格for col in range(b1, b2+1):total_ones = count_threes(table, 2, col, r+2)cell = table.cell(r+2-1, col-1)cell.text = str(total_ones)paragraph = cell.paragraphs[0]paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER# 遍历每一列,统计数字1的个数并填入对应的单元格for col in range(b1, b2+1):total_ones = count_twos(table, 2, col, r+3)cell = table.cell(r+3-1, col-1)cell.text = str(total_ones)paragraph = cell.paragraphs[0]paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER# 遍历每一列,统计数字1的个数并填入对应的单元格for col in range(b1, b2+1):total_ones = count_ones(table, 2, col, r+4)cell = table.cell(r+4-1, col-1)cell.text = str(total_ones)paragraph = cell.paragraphs[0]paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER# 计算平均值# 在 main() 函数中添加以下代码:for col in range(b1, b2+1):# 计算指定范围内单元格的平均值average = calculate_average(table, 2, col, r-1)# 获取要写入平均值的单元格cell = table.cell(r+5-1, col-1)# 将平均值转换为字符串并写入单元格cell.text = str(average)# 获取单元格中的段落对象paragraph = cell.paragraphs[0]# 设置段落居中对齐paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER# 保存为新文件doc.save(output_file)if __name__ == "__main__":main()print('---4、合并文档--')import os,timeimport shutilfrom docx import Documentpath=r'C:\Users\jg2yXRZ\OneDrive\桌面\月评估'new_folder=path+r'\零时文件夹' os.makedirs(new_folder,exist_ok=True)output_file = path+fr"\{num:02d}中4班 月评估(202402-202406).docx"output_doc = Document(new_folder+r'\0.docx')   files = os.listdir(new_folder)for index, file in enumerate(files):if file.endswith(".docx") and index != 0:input_file = os.path.join(new_folder, file)input_doc = Document(input_file)# output_doc.add_page_break()  # 添加换页符for element in input_doc.element.body:    output_doc.element.body.append(element)# 获取文档的段落数量  删除最后一段num_paragraphs = len(output_doc.paragraphs)if num_paragraphs > 0:output_doc.paragraphs[num_paragraphs - 1]._element.getparent().remove(output_doc.paragraphs[num_paragraphs - 1]._element)time.sleep(2)output_doc.save(output_file)

我对4个月的数据,进行比例抽取(1-12列、13-14列分别抽取)

结果发现第1个月和最后一个月里,13-14列的平均值并没有比1-12的平均值小。所以我生成了5份。从里面找了一份相对适合的。

这份月评估生成时间很长很长,一份就可以生成5分钟。

最后只找出第5份的平均数相对符合要求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/33670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 NXP LS1046 +FPGA系列 CPCI 架构轨道交通专用板卡

基于 NXP LS1046 系列 CPCI 架构轨道板卡 该产品是一款 CPCI 无风扇架构的高可靠性板卡,CPU 选用 NXP LS1046A 系统平台,支持嵌入式 Linux 或者标准 Ubuntu Linux 、凝思等操作系统,轨道交通 EMC 及宽温级别设计,板载多路 M12 高速…

蓝牙技术|苹果iOS 18的第三方配件将支持AirPods / AirTag的配对体验

苹果公司在 iOS 18 系统中引入了名为 AccessorySetupKit 的新 API,用户不需要进入蓝牙设置和按下按钮,系统就能识别附近的配件,并提示用户进行配对。首次向配件制造商开放这种配对体验。 iPhone 用户升级 iOS 18、iPad 用户升级到 iPadOS 1…

使用 MinIO S3 和 Tailscale VPN 部署应用程序基础设施

在现代 IT 运营中,面向 IT 运营的人工智能 (AI-Ops) 正在通过使用高级算法自动执行任务来改变数据管理。MinIO 和 Tailscale 共同为应用层开发提供了安全、可扩展和有效的基础设施。Tailscale 凭借其基于 WireGuard 的覆盖 VPN 网络&#xff…

【小白专用 已验证24.6.18】C# SqlSugar操作MySQL数据库实现增删改查

【小白专用24.6.18】C# SqlSugar:连接数据库实现简单的,增、删、改、查-CSDN博客 SqlSugar .Net ORM 5.X 官网 、文档、教程 - SqlSugar 5x - .NET果糖网 SqlSugar项目创建 通过NuGet包管理器搜索SqlSugar(MySql还要安装MySql.Data、Newton…

讯飞听见录音笔H1/H1 PRO 如何在录音笔中删除录音

讯飞听见录音笔H1/H1 PRO 如何在录音笔中删除录音 讯飞听见录音笔H1/H1 PRO 如何在录音笔中删除录音 讯飞听见录音笔H1/H1 PRO 如何在录音笔中删除录音 同时按下音量➕和音量➖就可以

大数据处理的坚实基石:Scala不可变数据结构的作用

在大数据处理领域,数据的一致性、可靠性和性能至关重要。Scala语言提供的不可变数据结构在保证数据处理的稳定性和高效性方面发挥着重要作用。本文将详细探讨Scala中不可变数据结构的概念、优势以及它们在大数据处理中的应用。 不可变数据结构的概念 在Scala中&am…

Java零基础-集合:Queue

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

C# —— 继承

C# 面向对象的编程语言: 三个基本特征 1.封装: 例如平时定义一个类 添加属性和方法,属性和方法必须通过指定的对象进行使用,(专业来讲。隐藏对象内部的状态和功能,仅允许通过一组公共函数进行使用) 2.继承: 子类和父类的区分,子…

Redis之商品缓存

文章目录 什么是缓存添加Redis缓存缓存更新策略缓存穿透缓存空对象布隆过滤器 缓存雪崩给不同的key的TTL添加随机值利用Redis集群提高服务的可用性给缓存业务添加降级限流策略给业务添加多级缓存 缓存击穿互斥锁逻辑过期 缓存工具封装方法1 写入redis方法2 设置逻辑过期方法3 解…

驱动开发(六):应用层通过文件系统与内核层交互

驱动开发相关文章: 驱动开发(一):驱动代码的基本框架 驱动开发(二):创建字符设备驱动 驱动开发(三):内核层控制硬件层 驱动开发(四)&#xff…

Redis数据结构-跳跃表 skiplist

跳跃表(Skiplist)是一种用于高效查找的概率型数据结构,它在插入、删除、搜索操作上具有较高的性能,接近于平衡树。Redis使用跳跃表来实现有序集合(sorted sets)中的范围查询。 ### 跳跃表的基本结构 跳跃…

借助TheGraph 查询ENS信息

关于ENS (以太坊域名服务) ENS 全称是 Ethereum Name Service,它是一个建立在以太坊区块链上的去中心化域名系统。 ENS 在 Web3 领域发挥着重要作用,主要有以下几个方面: 可读性更好的地址: ENS 允许用户将复杂的以太坊地址(如 0x12345…) 映射为更简单易记的域名。这极大地提…

数据分析-------面试相关

数据分析面试到底在面什么 在寻找合适的数据分析师时,一般招聘方的目标是确保候选人的专业技能和工作经验与岗位要求紧密对应。 关键在于两个方面:岗位的具体需求和数据分析师的职业素质。 首先,招聘方要确保应聘者的专业背景和技能与职位需求相匹配。…

解决微信小程序中input框被禁用后,电脑端小程序点击事件无效,手机端开发者工作和手机端正常

问题&#xff1a;input框被禁用后&#xff0c;电脑端小程序点击事件无效&#xff0c;手机端开发者工作和手机端正常。 解决方法&#xff1a;使用view包裹input标签&#xff0c;在view添加点击事件&#xff0c;input添加css:pointer-events:none; // 禁止鼠标事件 <view bin…

中国车牌检测数据集VOC+YOLO格式2001张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2001 标注数量(xml文件个数)&#xff1a;2001 标注数量(txt文件个数)&#xff1a;2001 标注…

Java 中的 Optional 类及其在避免空指针异常中的作用?如何使用它们来过滤重复元素?

在Java编程的世界里&#xff0c;NullPointerException&#xff08;空指针异常&#xff09;恐怕是每个开发者都不陌生的“老朋友”。它通常发生在尝试访问或操作一个为null的对象的成员时&#xff0c;这不仅会导致程序崩溃&#xff0c;还可能隐藏了代码中的逻辑错误。为了优雅地…

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统&#xff1f; 从严格意义上说&#xff0c;可将操作系统定义为一种软件&#xff0c;它控制计算机硬件资源&#xff0c;提供程序运行环境。我们通常将这种软件称为内核&#xff08;kerel)&#xff0c;因为它相对较小&#xff0c;而且位于环境的核心。 从广义上…

【TensorFlow深度学习】完整项目案例:从零搭建自然语言问答系统

完整项目案例:从零搭建自然语言问答系统 完整项目案例:从零搭建自然语言问答系统1. 项目概览2. 技术栈与环境准备3. 数据准备4. 模型选择与加载5. 数据预处理6. 模型预测7. 性能优化与评估8. 部署与应用结语完整项目案例:从零搭建自然语言问答系统 随着人工智能技术的飞速发…

用python打印——九九乘法表2

for i in range(1, 10):for j in range(1, i 1):print(f"{j} * {i} {j * i}\t", end)j 1print()外层的 for 循环从 1 到 9 遍历 i。对于每个 i&#xff0c;内层的 for 循环从 1 到 i 遍历 j。在每次循环中&#xff0c;打印出 j 乘以 i 的结果&#xff0c;并以制表…

数据安全和数据加密

数据安全 数据安全是信息技术领域的一个核心议题&#xff0c;涉及到保护数字资料免受未经授权的访问和攻击。它主要包含三个关键方面&#xff1a;可用性、完整性和机密性&#xff0c;这三个要素共同构成了所谓的“信息安全三原则”。 可用性 可用性意味着授权用户能够及时地…