【办公类-50-01】20240620自主游戏观察记录表19周内容打乱

2024-06-22 20:52

本文主要是介绍【办公类-50-01】20240620自主游戏观察记录表19周内容打乱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景需求:

又到了期末,各种班级资料需要提交。

有一份自主游戏观察记录需要写19周(每周2次)的观察记录,并根据参考书填写一级、三级、五级的评价指标。

去年中六班的时候,我很认真的手写了21周的户外游戏活动内容,主动成为2个需要提交文本资料的班级。

今年组长选了中二和中五提交打印资料。因此中四班的游戏观察资料可以不那么“优质”,所以本学期我想“偷个懒”,再次使用去年的内容做电子稿提交。

考虑到这套资料也给过其他班级,我担心会出现重复,所以有两个调整的思路:

1、将每个周次的内容进行替换,如原来第1周的内容放到第15周,第13周内容调到第2周。

2、虽然内容没有修改,但至少将孩子的名字替换成新的名字(中四班孩子的小名)

设计过程。

1、原素材

2、模板

3、代码思路

(1)读取原素材表格中各个单元格里面的内容,新建一个excel并保存这些内容

 (2)手动更改小名:因为不确定出现哪些名字,需要把表格拉宽,查看里面的名字。这里程序要会暂停。

(3)改完以后,打乱行的顺序,把文字内容重写排列,

(4)把excel每行内容生成一个docx,把所有doc合并在一起

然后程序把所有的docx合并在一个docx内

部分表格手动调整(删除回车符),确保每个表格内容都在一页上。

代码展示:

'''
项目:期末资料:19周游戏观察记录内容周次调换
工具:星火讯飞、阿夏
时间:2024年6月20日
'''import re
import pandas as pd
from docx import Document
import timefor y in range(5):path = r'C:\Users\jg2yXRZ\OneDrive\桌面\游戏观察记录'# 读取1.docx文件doc = Document(path + r"\中(6)班自主游戏观察记录(202302-202306)全部户外.docx")weeks=19 # 一共几周name1='张三'name2='李四'print('---1、提取原来的游戏观察记录内容-----')# 提取所有段落中“第”和“周”之间的内容results = []for paragraph in doc.paragraphs:content = paragraph.textpattern = r"第(.*?)周"result = re.findall(pattern, content)if result:results.extend(result)# 缩进2字符b='    ' table_data1 = []for table in doc.tables:cell_value1 = table.cell(0, 0).text.replace(" ", "")  # 清除缩进lines1 = cell_value1.split('\n')del lines1[0]  # 删除第一行new_lines1 = [b + line for line in lines1]  # 在每行前面加四个空格new_cell_value1 = '\n'.join(new_lines1)table_data1.append(new_cell_value1)print(new_cell_value1)table_data2 = []for table in doc.tables:cell_value2 = table.cell(2, 0).text.replace(" ", "")   # 清除缩进lines2 = cell_value2.split('\n')del lines2[0]  # 删除第一行new_lines2 = [b + line for line in lines2]  # 在每行前面加四个空格new_cell_value2 = '\n'.join(new_lines2)table_data2.append(new_cell_value2)print(new_cell_value2)table_data3 = []for table in doc.tables:cell_value3 = table.cell(0, 1).text.replace(" ", "")   # 清除缩进lines3 = cell_value3.split('\n')del lines3[0]  # 删除第一行new_lines3 = [b + line for line in lines3]  # 在每行前面加四个空格new_cell_value3 = '\n'.join(new_lines3)table_data3.append(new_cell_value3)print(new_cell_value3)table_data4 = []for table in doc.tables:cell_value4 = table.cell(2, 1).text.replace(" ", "")   # 清除缩进lines4 = cell_value4.split('\n')del lines4[0]  # 删除第一行new_lines4 = [b + line for line in lines4]  # 在每行前面加四个空格new_cell_value4 = '\n'.join(new_lines4)table_data4.append(new_cell_value4)print(new_cell_value4)table_data5= []for table in doc.tables:cell_value5 = table.cell(1, 1).text.replace(" ", "")   # 清除缩进print(cell_value5)table_data5.append(cell_value5[3:])# print(new_cell_value5)table_data6= []for table in doc.tables:cell_value6 = table.cell(3, 1).text.replace(" ", "")   # 清除缩进print(cell_value6)table_data6.append(cell_value6[3:])# print(new_cell_value5) df = pd.DataFrame({'Week': results, 'content1': table_data1,'content2': table_data2,'fx1': table_data3,'fx2': table_data4,'T1': table_data5,'T2': table_data6})df.to_excel(path + '\\数据导出改人名.xlsx', index=False)# 手动改人名print("手动改人名,按任意键继续...")input()  # 这里会暂停程序,直到用户输入信息print("程序继续执行...")print('---2、手动改人名,随机抽取行数,重新保存一份----')import pandas as pd# 读取Excel文件data = pd.read_excel(path + '\\数据导出改人名.xlsx')# 获取行数num_rows = len(data)print(num_rows)# 19# 打乱行顺序shuffled_data = data.sample(frac=1).reset_index(drop=True)# 保存打乱顺序后的数据为新的Excel文件shuffled_data.to_excel(path +r'\更换顺序.xlsx', index=False)# 更改周次和姓名import openpyxl# 打开Excel文件workbook = openpyxl.load_workbook(path +r'\更换顺序.xlsx')# 选择工作表worksheet = workbook.active# 在A列第2行开始写入1-20的数字for i in range(2, num_rows+2):worksheet.cell(row=i, column=1).value = i - 1# 在F列写入教室A的名字for i in range(2, num_rows+2):worksheet.cell(row=i, column=6).value = name1# 在G列写入教室A的名字for i in range(2, num_rows+2):worksheet.cell(row=i, column=7).value = name2time.sleep(2)# 保存修改后的Excel文件workbook.save(path+r'\更换顺序.xlsx')print('---3、写入模板生成新的文件--')import osimport pandas as pdfrom docxtpl import DocxTemplatefile_path = path + r'\04合成2'try:os.mkdir(file_path)except:passlist = pd.read_excel(path + '\\更换顺序.xlsx')Week= list["Week"]content1 = list["content1"].str.rstrip()content2 = list["content2"].str.rstrip()fx1 = list["fx1"].str.rstrip()fx2 = list["fx2"].str.rstrip()T1 = list["T1"].str.rstrip()T2 = list["T2"].str.rstrip()num = list.shape[0]for i, (w, c1, c2, f1, f2 ,t1, t2) in enumerate(zip(Week, content1, content2, fx1,fx2,T1, T2)):context = {"Week": w,"content1": c1, "content2": c2,"fx1": f1,"fx2": f2, "T1": t1,"T2": t2,}tpl = DocxTemplate(path + '\\模版游戏观察记录与反思(2024.1).docx')tpl.render(context)time.sleep(4)tpl.save(file_path + fr"\第{i+1:02d}周.docx")print('---4、合并文档--')import osimport shutilfrom docx import Documentdef merge_docx_files(input_folder, output_file):output_doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\游戏观察记录\04合成2\第01周.docx')   files = os.listdir(input_folder)for index, file in enumerate(files):if file.endswith(".docx") and index != 0:input_file = os.path.join(input_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)time.sleep(2)output_doc.save(output_file)input_folder = file_pathoutput_file = path+fr"\{y:02d}中4班 游戏活动观察记录(202402-202406)全部户外.docx"merge_docx_files(input_folder, output_file)

存在问题:

本代码有一个问题,就是每次提取的文字会有缺失,原因不明,

所以我就生成多份随机排序的文件,从中挑选一个内容相对多的文件,作为提交的电子稿的资料。

运气好,以下这份文字较为齐全(撑满格子)

哎,偷懒就不能保证打乱文字的稳定性,所以要多抽几次博一个成功的概率,或者还是乖乖的自己手写吧!

这篇关于【办公类-50-01】20240620自主游戏观察记录表19周内容打乱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085382

相关文章

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看

火柴游戏java版

代码 /*** 火柴游戏* <p>* <li>有24根火柴</li>* <li>组成 A + B = C 等式</li>* <li>总共有多少种适合方式?</li>* <br>* <h>分析:</h>* <li>除去"+"、"="四根,最多可用火柴根数20根。</li>* <li>全部用两根组合成"1",最大数值为1111。使用枚举法,A和B范围在0~1111,C为A+B。判断</li>** @

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

【附答案】C/C++ 最常见50道面试题

文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的`if`语句面试题 3:深入理解`sizeof`与`strlen`的差异面试题 4:解析C与C++中`static`关键字的不同用途面试题 5:比较C语言的`malloc`与C++的`new`面试题 6:实现一个“标准”的`MIN`宏面试题 7:指针是否可以是`volatile`面试题 8:探讨`a`和`&a`

day-50 求出最长好子序列 I

思路 二维dp,dp[i][h]表示nums[i] 结尾,且有不超过 h 个下标满足条件的最长好子序列的长度(0<=h<=k),二维数组dp初始值全为1 解题过程 状态转换方程: 1.nums[i]==nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h]+1) 2.nums[i]!=nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h-1

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4