【办公类-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…

Redis之商品缓存

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

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

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

借助TheGraph 查询ENS信息

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

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

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

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

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

STM32介绍和资料地址

STM32标准外设软件库 https://www.st.com.cn/zh/embedded-software/stm32-standard-peripheral-libraries.html 支持标准外设库的产品系列:

XMLTomcatHttp协议

XML&Tomcat&Http协议 目录 XML&Tomcat&Http协议 1. xml解析(了解) 1.1 配置文件 1.1.1 配置文件的作用 1.1.2 常见的配置文件类型 1.2 properties文件 1.2.1 文件示例 1.2.2 语法规范 1.3 XML文件 1.3.1 文件示例 1.3.2 概念介绍 1.3.3 XML的基本语…

【Android】记录在自己的AMD处理器无法使用Android studio 虚拟机处理过程

文章目录 问题:无法在AMD平台打开Android studio 虚拟机,已解决平台:AMD 5700g系统:win10专业版1、在 amd平台上使用安卓虚拟机需要安装硬件加速器2、关闭win10上的系统服务 问题:无法在AMD平台打开Android studio 虚拟…

LabVIEW电机故障监测系统

电机作为工业生产中的关键设备,其故障会导致生产停滞和经济损失。因此,开发一个能实时监控电机状态并预测潜在故障的系统具有重要意义。通过高效的数据采集和分析技术,提升故障诊断的准确性和及时性。 系统组成 该系统由以下部分组成&#…

vue3 运用高德地图 自定义弹框 为信息窗体 添加 new AMaps.value.InfoWindow 添加事件

效果图 划过散点的时候出现每个三点位置的数据提示 点击具体散点获取展示信息弹框,并为其添加点击事件 注意点: 1 即使是用的vue,也不能使用click为窗体添加点击事件,需要使用onclick, (原因&#xff1a…

TMC2209驱动模式详解

TMC2209驱动模式详解 1.TMC2209封装2.TMC2209引脚定义 1.TMC2209封装 2.TMC2209引脚定义

JavaWeb系列十五: JavaWeb三大组件之过滤器Filter

老韩-JavaWeb三大组件之过滤器Filter 过滤器说明过滤器基本原理过滤器分析和实例url-patternFilter生命周期FilterConfigFilterConfig应用实例过滤器链基本原理分析过滤链实例演示过滤链注意事项 过滤器作业布置 过滤器说明 过滤器说明 Filter 过滤器是JavaWeb三大组件之一(Se…

Android AOSP 编译并烧录到Google Pixel4XL

简介 AOSP(Android Open Source Project)是Android系统的开源版本,任何人都可以下载、编译和修改。手头上有一台Pixel 4XL,尝试编译AOSP并将其烧录到的设备上。 准备工作 在开始之前,您需要确保您的电脑满足以下条件…

实验08 软件设计模式及应用

目录 实验目的实验内容一、能播放各种声音的软件产品Sound.javaDog.javaViolin.javaSimulator.javaApplication.java运行结果 二、简单工厂模式--女娲造人。Human.javaWhiteHuman.javaYellowHuman.javaBlackHuman.javaHumanFactory.javaNvWa.java运行结果 三、工厂方法模式--女…

Python爬虫项目集:豆瓣电影排行榜top250

关于整理日常练习的一些爬虫小练习,可用作学习使用。 爬取项目以学习为主,尽可能使用更多的模块进行练习,而不是最优解。 爬虫概要 示例python 库爬取模块request解析模块BeautifulSoup存储类型list(方便存入数据库&#xff09…

2024年最新 Windows 操作系统安装部署 MongoDB 数据库详细教程(更新中)

MongoDB 概述 MongoDB 是一个基于分布式文件存储的开源数据库系统,由C语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系…