当前位置: 首页 > news >正文

《Python趣味工具》——ppt的操作(刷题版)

前面我们对PPT进行了一定的操作,并将其中的文字提取到了word文档中。现在就让我们来刷几道题巩固巩固吧!


在这里插入图片描述


文章目录

  • 1. 查看PPT(上)
  • 2. 查看PPT(中)
  • 3. 查看PPT(下)
  • 4. PPT的页码
  • 5. 大学期末考试
  • 6. 查找重复页
  • 7. 用代码写首小诗


1. 查看PPT(上)

由于期末复习的课程很多,每个课程中又包含了一些PPT,小何想能不能通过 input() 函数,实现个性化交互,让同学们通过输入PPT的名称就可以一键提取出对应的文本并写入Word文档呢🤔

那我们通过三道题实现这个功能吧,在本题中,你需要做的是:通过 input() 函数输入 PPT 的页码,就可以找到该页码对应的形状数。

解题步骤:

  1. 读取指定PPT的幻灯片页;

  2. 使用 input() 函数让用户输入 PPT 的页码(这份PPT只有91页哦);

  3. 将输入的页码减去 1 ,作为幻灯片页序列的索引值,并访问其 .shapes 属性;

  4. 格式化字符串输出"第{x}页有{x}个形状"。

示例代码如下:

# 使用from...import从pptx模块中导入Presentation
from pptx import Presentation# 将.pptx文件路径赋值给变量path
path = "/Users/xiaohe/statistics.pptx"# 读取path并赋值给变量pptxFile
pptxFile = Presentation(path)# 访问Presentation中的.slides属性,赋值给slide
slide = pptxFile.slides# 使用input()函数"输入PPT的页码:"
# 将输入的内容进行int()类型转换后,赋值给pageNumber
pageNumber=int(input("输入PPT的页码:"))# 将pageNumber减1,赋值给index
index=pageNumber-1# 将index作为幻灯片页的索引值,并访问.shapes属性赋值给shape
shape=slide[index].shapes# 利用len()函数对选中的PPT页进行形状数统计,并赋值shapeNumber
shapeNumber=len(shape)# print()格式化输出f"第{pageNumber}页有{shapeNumber}个形状"
print(f"第{pageNumber}页有{shapeNumber}个形状")

2. 查看PPT(中)

上一次我们已经实现了输入PPT的页码,就能找到该页码对应的形状数这一功能,那么本次我们就来实现通过input() 函数输入PPT页码来获取该页码下面全部的文本内容吧🤔

解题步骤:

  1. 读取指定PPT的幻灯片页;

  2. 使用 input() 函数让用户输入 PPT 的页码(这份PPT只有91页哦);

  3. 将输入的页码减去 1 ,作为幻灯片页序列的索引值;

  4. 访问PPT每一页里面的全部文本内容,并打印出来;

示例代码如下:

# 使用from...import从pptx模块中导入Presentation
from pptx import Presentation# 将.pptx文件路径赋值给变量path
path = "/Users/xiaohe/statistics.pptx"# 读取path并赋值给变量pptxFile
pptxFile = Presentation(path)# 访问Presentation对象中的.slides属性,赋值给slide
slide = pptxFile.slides# 使用input()函数"输入PPT的页码(1-91):"
# 将输入的内容进行int()类型转换后,赋值给pageNumber
pageNumber=int(input("输入PPT的页码(1-91):"))# 将pageNumber减1,赋值给index
index=pageNumber-1# 将index作为幻灯片页的索引值,把slide[index]赋值给变量slide_s
slide_s=slide[index]# 将index作为幻灯片页的索引值,for循环遍历slide_s的shapes属性
for shape in slide_s.shapes:# 判断单个shape中是否有文本框if shape.has_text_frame == True:# 读取单个shape中的文本框,并赋值给变量textFrametextFrame = shape.text_framefor para in textFrame.paragraphs:for run in para.runs:# 读取文本框中的文本内容,并赋值给变量textstexts=run.text# print()输出textsprint(texts)

3. 查看PPT(下)

我们在前面已经实现了输入PPT的页码,就能找到该页码对应的形状数以及获取该页码下全部的文本内容等功能,那么本次我们就来实现我们的最终目标吧!🥳通过input() 函数输入PPT名称,一键提取出对应的文本并写入Word文档

解题步骤:

  1. 新建一个空白的 Word 文档;

  2. 使用 input() 函数让用户输入 PPT 的名称;

  3. 访问输入名称的 PPT 中每一页样式块文本内容,使用 add_paragraph() 函数添加文案内容到文档当中;

  4. 将 Word 文档至指定路径。

文件夹路径下包含的PPT文件有:
可用性.pptx;
易修改性.pptx
质量属性.pptx

保存路径:/Users/xiaohe/资料.docx

示例代码如下:

# 使用from...import从pptx模块中导入Presentation
from pptx import Presentation# 使用import导入docx
import docx# 新建一个空白Word文档,赋值给变量docxFile
docxFile=docx.Document()# 将文件夹路径赋值给变量path
path = "/Users/xiaohe"# 使用input()函数"输入PPT的名称(可用性/易修改性/质量属性):"
pptName = input("输入PPT的名称(可用性/易修改性/质量属性):")# 将输入的PPT名称构造正确的读取路径并赋值给fileName
fileName = path+"/"+ pptName+".pptx"# 读取fileName并赋值给变量pptxFile
pptxFile = Presentation(fileName)# for循环遍历pptxFile的slides属性
for slide in pptxFile.slides:# for循环遍历slide中.shapes属性for shape in slide.shapes:# 判断单个shape中是否有文本框if shape.has_text_frame == True:# 读取单个shape中的文本框,并赋值给变量textFrametextFrame = shape.text_frame# 按样式块提取文本,并写入Word文档中for para in textFrame.paragraphs:for run in para.runs:                 docxFile.add_paragraph(run.text)# 保存文档到指定路径,并命名为"资料.docx"
docxFile.save("/Users/xiaohe/资料.docx")

4. PPT的页码

通过今天的学习,我们获取到了 PPT 中全部幻灯片页序列,如何获取PPT的总页码呢?🤔

幻灯片页序列中包含所有幻灯片页对象,可以使用 len() 函数得到序列的长度,也就是PPT的总页码数。

fruitList = [“apple”, “banana”, “watermelon”]
print(len(fruitList))
输出结果为:3

示例代码如下:

# 使用from...import从pptx模块中导入Presentation
from pptx import Presentation# 将.pptx文件路径赋值给变量path
path = "/Users/xiaohe/statistics.pptx"# 读取path并赋值给变量pptxFile
pptxFile=Presentation(path)# 在Presentation对象中访问.slides属性,并赋值给slides
slides=pptxFile.slides# 使用len()函数获取slides序列的长度,赋值给变量page
page=len(slides)# print()格式化输出f"PPT一共有{page}页"
print(f"PPT一共有{page}页")

5. 大学期末考试

期末考试即将到来,小何开始根据PPT整理复习提纲。然而《软件体系结构》这门课程的PPT太多,依次整理其中的文本内容太麻烦啦😥

下面我们就来实现通过 input() 函数输入PPT名称,输出该PPT下的全部文本内容。

解题步骤:

  1. 使用 input() 函数让用户输入 PPT 的名称;

  2. 通过"+“,拼接文件路径;
    文件路径:文件夹路径+”/“+输入名称+”.pptx"

  3. 访问输入名称的PPT中每一页里面的全部文本内容,并打印出来;

文件夹路径下包含的PPT的名称为:
可用性
易修改性
质量属性

示例代码如下:

# 使用from...import从pptx模块中导入Presentation
from pptx import Presentation# 将文件夹路径赋值给变量path
path = "/Users/xiaohe"# 使用input()函数"输入PPT的名称(可用性/易修改性/质量属性):"
# 赋值给pptName
pptName=input("输入PPT的名称(可用性/易修改性/质量属性):")# 构造PPT读取路径并赋值给fileName
fileName=path+"/"+pptName+".pptx"# 读取fileName并赋值给变量pptxFile
pptxFile=Presentation(fileName)# for循环遍历pptxFile的slides属性,赋值给slide
for slide in pptxFile.slides:# for循环遍历slide中.shapes属性,赋值给shapefor shape in slide.shapes:# 判断每个shape中是否有文本框if shape.has_text_frame:# 读取单个shape中的文本框,并赋值给变量textFrametextFrame = shape.text_frame# 读取文本框中的文本内容,并赋值给变量textstexts = textFrame.text# print()输出textsprint(texts) # 有的文件只能这样输出,不用run

6. 查找重复页

由于很多PPT在制作时不小心会存在重复页,小何想能不能通过什么办法快速找出来PPT当中有哪两页是重复的呢🤔

那让我们一起来实现这个功能吧,在本题中,你需要做的是:

  1. 读取指定路径的PPT;

  2. 以幻灯片页为单位,将文本全部提取出;

  3. 定义一个新字典添加键值对,页码为键对应的值为本页文本内容;

  4. 接下来进行逐页查找,如果查找内容与指定内容相同,并且页码不相同,就格式化字符串输出"第x页和第x页重复"。

示例代码如下:

# 使用from...import从pptx模块中导入Presentation
from pptx import Presentation# 将.pptx文件路径赋值给变量path
path = "/Users/xiaohe/可用性.pptx"# 读取path并赋值给变量pptxFile
pptxFile = Presentation(path)# 定义一个空字典dict_all
dict_all={}# 定义变量pageNumber = 1
pageNumber = 1# for循环遍历pptxfile中的.slides属性
for slide in pptxFile.slides:# 定义一个空字符串textSlidetextSlide=""# for循环遍历slide中.shapes属性for shape in slide.shapes:# 判断单个shape中是否有文本框if shape.has_text_frame == True:# 把单个形状下的全部文本赋值给变量textstexts = shape.text# textSlide累加textstextSlide+=texts# 向字典dict_all添加键值对,pageNumber为键,对应值为textSlidedict_all[pageNumber]=textSlide# pageNumber累加1pageNumber += 1# 变量i设置为1
i = 1# while循环如果i<13
while i<13:# 变量check_k设置为icheck_k=i# check_v设置为dict_all[i]check_v=dict_all[i]# for循环遍历dict_all.items(),并赋值给key, valuefor key,value in dict_all.items():# 如果value等于check_vif value==check_v:# 如果key小于check_kif key<check_k:# 格式化字符串输出# f"第{key}页和第{check_k}页重复"print(f"第{key}页和第{check_k}页重复")# i累加1i += 1

7. 用代码写首小诗

刚学完如何用 Python 将文字写入 Word 文档的你快来写一首小诗送给秋天吧!

文案内容为:

月落乌啼霜满天
江枫渔火对愁眠
姑苏城外寒山寺
夜半钟声到客船

你需要完成:

  1. 新建一个空白的 Word 文档;

  2. 使用 input() 函数输入诗句;

  3. 使用 add_paragraph() 函数添加文案内容到文档当中;

  4. 将 Word 文档至指定路径。

保存路径:/Users/qu/诗句.docx

示例代码如下:

import docx
dox=docx.Document()for num in range(4):poem=input("poem:")dox.add_paragraph(poem)
dox.save("/Users/qu/诗句.docx")   

贺中秋,迎国庆!双节快乐!!!

在这里插入图片描述

相关文章:

《Python趣味工具》——ppt的操作(刷题版)

前面我们对PPT进行了一定的操作&#xff0c;并将其中的文字提取到了word文档中。现在就让我们来刷几道题巩固巩固吧&#xff01; 文章目录 1. 查看PPT&#xff08;上&#xff09;2. 查看PPT&#xff08;中&#xff09;3. 查看PPT&#xff08;下&#xff09;4. PPT的页码5. 大学…...

实战型开发--3/3,clean code

编程的纯粹 hmmm&#xff0c;一开始在这个环节想聊一些具体的点&#xff0c;其实也就是《clean code》这本书中的点&#xff0c;但这个就还是更流于表面&#xff1b; 因为编码的过程&#xff0c;就更接近于运动员打球&#xff0c;艺术家绘画&#xff0c;棋手下棋的过程&#x…...

家用无线路由器如何用网线桥接解决有些房间无线信号覆盖不好的问题(低成本)

环境 光猫ZXHN F677V9 水星MW325R 无线百兆路由器 100M宽带&#xff0c;2.4G无线网络 苹果手机 安卓平板电脑 三室一厅94平 问题描述 家用无线路由器如何用网线桥接解决有些房间无线信号不好问题低成本解决&#xff0c;无线覆盖和漫游 主路由器用的运营商的光猫自带无…...

【Golang】网络编程

网络编程 网络模型介绍 OSI七层网络模型 在软件开发中我们使用最多的是上图中将互联网划分为五个分层的模型&#xff1a; 物理层数据链路层网络层传输层应用层 物理层 我们的电脑要与外界互联网通信&#xff0c;需要先把电脑连接网络&#xff0c;我们可以用双绞线、光纤、…...

使用策略模式优化多重if/else

一、为什么需要策略模式&#xff1f; 作为前端程序员&#xff0c;我们经常会遇到这样的场景&#xff0c;例如 进入一个营销活动页面&#xff0c;会根据后端下发的不同 type &#xff0c;前端页面展示不同的弹窗。 async getMainData() {try {const res await activityQuery()…...

逆强化学习

1.逆强化学习的理论框架 1.teacher的行为被定义成best 2.学习的网络有两个&#xff0c;actor和reward 3.每次迭代中通过比较actor与teacher的行为来更新reward function&#xff0c;基于新的reward function来更新actor使得actor获得的reward最大。 loss的设计相当于一个排序问…...

postgresql新特性之Merge

postgresql新特性之Merge 创建测试表测试案例 创建测试表 create table cps.public.test(id integer primary key,balance numeric,status varchar(1));测试案例 官网介绍 merge into test t using ( select 1 id,0 balance,Y status) s on(t.id s.id) -- 当匹配上了,statu…...

【注解】注解解析与应用场景

注解解析与应用场景 1.注解解析 注解解析就是判断类上、方法上、成员变量上是否存在注解&#xff0c;并把注解里的内容给解析出来 2.如何解析注解&#xff1f; 思想&#xff1a;要解析谁上面的注解&#xff0c;就应该先拿到谁&#xff08;通过反射&#xff09;如果要解析类…...

mysql面试题14:讲一讲MySQL中什么是全同步复制?底层实现?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:讲一讲mysql中什么是全同步复制?底层实现? MySQL中的全同步复制(Synchronous Replication)是一种复制模式,主服务器在写操作完成后,必须等待…...

Linux驱动设备号分配与自动创建设备节点

Linux 驱动设备号 对于 Linux 系统&#xff0c;为了识别和管理设备&#xff0c;每个设备便使用一个唯一的编号来标记设备&#xff0c;每个注册到内核的设备都需要一个编号&#xff0c;这个编号就是设备号&#xff0c;为了细分设备号分为主设备号和次设备号。 由于 Linux 的设…...

基于MFC和OpenCV实现人脸识别

基于MFC和OpenCV实现人脸识别 文章目录 基于MFC和OpenCV实现人脸识别1. 项目说明1. 创建项目2. 启动窗口3. 登录窗口-添加窗口、从启动窗口跳转4. 启动窗口-美化按钮5. 登录窗口-美化按钮、雪花视频6. 注册窗口-美化按钮、雪花视频、从启动窗口跳转7. 注册窗口-开启摄像头8. 注…...

力扣 -- 377. 组合总和 Ⅳ

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int combinationSum4(vector<int>& nums, int target) {int nnums.size();vector<double> dp(target1);//初始化dp[0]1;//填表for(int i1;i<target;i){for(int j0;j<n;j){//填表if(…...

阿里云新账户什么意思?老用户、产品首购详细说明

阿里云新账户、老账号、产品首购和同人账号什么意思&#xff1f;阿里云账号分为云新账户、老账户、产品首购、同人账号和同一用户&#xff0c;阿里云官方推出的活动很多是限制账号类型的&#xff0c;常见的如阿里云新用户&#xff0c;什么是阿里云新用户&#xff1f;是指从未在…...

C++ YAML使用

C++工程如何使用YAML-cpp 一、前期准备工作 1、已安装minGW、cmake、make等本地工具。 2、下载YAML-cpp第三方开源代码(一定要下载最新的release版本,不然坑很多)。 3、生成YAML-cpp静态库 (1)在yaml-cpp-master下建立build文件夹; (2)在该文件夹下生成MakaFile文…...

十二、Django之模板的继承+用户列表

模板的继承 新建layout.html&#xff1a; {% load static %} <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><link rel"stylesheet" href"{% static plugins…...

wzsc_文件上传(条件竞争)

打开题目链接&#xff0c;很常见的文件上传框 经过尝试&#xff0c;发现上传东西后会调用upload.php&#xff0c;猜测文件被传到upload目录下 随便传了几个类型的文件&#xff0c;访问upload目录 发现.php文件以及.htaccess、.user.ini这种配置文件都没有传上去 但是通过抓包…...

unplugin-vue-components和unplugin-auto-import插件

unplugin-auto-import&#xff1a;自动按需引入 vue\vue-router\pinia 等的 api unplugin-vue-components&#xff1a;自动按需引入 第三方的组件库组件 和 我们自定义的组件 使用此类插件&#xff0c;不需要手动编写import {xxx} from vue这样的代码了&#xff0c;提升开发效…...

docker系列文章目录

docker系列专栏笔记总算完成了&#xff0c;平时下班比较晚&#xff0c;利用晚上的一些时间整理了这一系列的学习笔记。 docker系列教程包含以下几个方面&#xff1a; docker环境篇 介绍docker环境的搭建&#xff0c;已经管理平台工具(portainer)的简单使用。 docker常用命令篇…...

第80步 时间序列建模实战:GRNN回归建模

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们使用Matlab进行GRNN模型的构建。 使用的数据如下&#xff1a; 采用《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrom…...

《C和指针》笔记33:指针数组

除了创建整型数组一样&#xff0c;也可以声明指针数组。 int *api[10];为了弄清这个复杂的声明&#xff0c;我们假定它是一个表达式&#xff0c;并对它进行求值。下标引用的优先级高于间接访问&#xff0c;所以在这个表达式中&#xff0c;首先执行下标引用。因此&#xff0c;a…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...