当前位置: 首页 > 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…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...