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

news2024/11/25 14:49:24

前面我们对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中的文本框,并赋值给变量textFrame
        textFrame = shape.text_frame
              
        for para in textFrame.paragraphs:
            
            for run in para.runs:
            
        # 读取文本框中的文本内容,并赋值给变量texts
                texts=run.text
        
        # print()输出texts
                print(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中的文本框,并赋值给变量textFrame
            textFrame = 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属性,赋值给shape
    for shape in slide.shapes:
    
        # 判断每个shape中是否有文本框
        if shape.has_text_frame:
        
            # 读取单个shape中的文本框,并赋值给变量textFrame
            textFrame = shape.text_frame
            
            # 读取文本框中的文本内容,并赋值给变量texts
            texts = textFrame.text
            
            # print()输出texts
            print(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:

    # 定义一个空字符串textSlide
    textSlide=""
    
    # for循环遍历slide中.shapes属性
    for shape in slide.shapes:
    
        # 判断单个shape中是否有文本框
        if shape.has_text_frame == True:
        
            # 把单个形状下的全部文本赋值给变量texts
            texts = shape.text
            
            # textSlide累加texts
            textSlide+=texts
            
    # 向字典dict_all添加键值对,pageNumber为键,对应值为textSlide
    dict_all[pageNumber]=textSlide
    
    # pageNumber累加1
    pageNumber += 1

# 变量i设置为1
i = 1

# while循环如果i<13
while i<13:

    # 变量check_k设置为i
    check_k=i
    
    # check_v设置为dict_all[i]
    check_v=dict_all[i]
    
    # for循环遍历dict_all.items(),并赋值给key, value
    for key,value in dict_all.items():
    
        # 如果value等于check_v
        if value==check_v:
        
            # 如果key小于check_k
            if key<check_k:
            
                # 格式化字符串输出
                # f"第{key}页和第{check_k}页重复"
                print(f"第{key}页和第{check_k}页重复")
                
    # i累加1
    i += 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")   

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

在这里插入图片描述

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

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

相关文章

KUKA机器人通过3点法设置工作台基坐标系的具体方法

KUKA机器人通过3点法设置工作台基坐标系的具体方法 具体方法和步骤可参考以下内容: 进入主菜单界面,依次选择“投入运行”—“测量”—基坐标,选择“3点法”, 在系统弹出的基坐标编辑界面,给基座标编号为3,命名为table1,然后单击“继续”按钮,进行下一步操作, 在弹出的…

【论文极速读】Prompt Tuning——一种高效的LLM模型下游任务适配方式

【论文极速读】Prompt Tuning——一种高效的LLM模型下游任务适配方式 FesianXu 20230928 at Baidu Search Team 前言 Prompt Tuning是一种PEFT方法&#xff08;Parameter-Efficient FineTune&#xff09;&#xff0c;旨在以高效的方式对LLM模型进行下游任务适配&#xff0c;本…

车联网时代,能链车联凭什么成为“关键先生”?

又到国庆长假&#xff0c;许多人开启远途旅行&#xff0c;高速路上一如既往的拥堵。在密密麻麻的汽车中&#xff0c;新能源汽车变得越来越多。 事实上&#xff0c;新能源汽车的热潮&#xff0c;已经成为不可抵挡的趋势。据中国乘联会的最新数据&#xff0c;今年中国新能源乘用…

USB TypeC接口说明

USB TypeC 拥有诸多优点:双面可插不担心正反、可做USB/雷电高速传输载体,支持 PD快充、音频设备、HDMI传输、调试模式等诸多功能。 市面上的其他USB接口和充电接口在逐步被TypeC替代,可以预见的是,TypeC作为一种多兼容性接口,其未来会具有非常长的生命周期。 本文主要介…

Eclipse环境基于HDFS的API进行开发

文章目录 IOUtils方式读取文件1.文件准备2.下载安装Eclipse3.打开eclipse&#xff0c;新建java项目&#xff0c;添加关于hadoop的一些包4.包内新建类进行开发5.利用打包的方式生成java jar包6.验证代码正确性 其它问题&#xff1a;Exception in thread “main“ java.lang.Unsu…

TouchGFX界面开发 | 添加触摸屏驱动

使用STM32CubeMX移植TouchGFX 一文中介绍了如何用TouchGFX点亮屏幕&#xff0c;但是此时屏幕还没有触摸的功能。下面将介绍如何添加触摸屏驱动到TouchGFX中 一、STM32CubeMX配置 在使用STM32CubeMX移植TouchGFX 文中的STM32CubeMX配置基础上&#xff0c;再激活一个定时器&…

Pikachu靶场——XXE 漏洞

文章目录 1. XXE1.1 查看系统文件内容1.2 查看PHP源代码1.3 查看开放端口1.4 探测内网主机 1. XXE 漏洞描述 XXE&#xff08;XML External Entity&#xff09;攻击是一种利用XML解析器漏洞的攻击。在这种攻击中&#xff0c;攻击者通过在XML文件中插入恶意实体来触发解析器加载…

自然语言处理(NLP)学习之与HanLP的初相识

目录 前言 一、自然语言处理基本知识 1、NLP类别 2、核心任务 二、Hanlp简要介绍 三、Hanlp云服务能力 1、全新云原生2.x 2、Python api调用 3、Go api调用 4、Java api调用 四、Hanlp native服务 1、本地开发 总结 前言 在ChatGPT的滚滚浪潮下&#xff0c;也伴随着人工智…

深入理解JavaScript中的事件冒泡与事件捕获

在JavaScript中&#xff0c;事件是交互式网页开发中的关键概念之一。了解事件冒泡和事件捕获是成为一名优秀的前端开发者所必需的技能之一。本文将深入探讨这两个概念&#xff0c;解释它们是如何工作的&#xff0c;以及如何在实际应用中使用它们来处理事件。 一.什么是事件冒泡…

No151.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

冲刺十五届蓝桥杯P0002 日期统计

文章目录 题目分析代码 题目 分析 需要明白一些概念&#xff0c;子序列、连续子序列。 1.子序列&#xff08;subsequence&#xff09;是指原始序列中按照相同顺序选择零个或多个元素而形成的序列。连续子序列&#xff08;subarray&#xff09;是指原始序列中相邻位置的元素构…

计算机网络之传输层

计算机网络 - 传输层 计算机网络 - 传输层 UDP 和 TCP 的特点UDP 首部格式TCP 首部格式TCP 的三次握手TCP 的四次挥手TCP 可靠传输TCP 滑动窗口TCP 流量控制TCP 拥塞控制 1. 慢开始与拥塞避免2. 快重传与快恢复 网络层只把分组发送到目的主机&#xff0c;但是真正通信的并不是…

网络-OSI、TCP、浏览器URL、CDN

文章目录 前言一、OSI七层模型二、TCP/IP和UDPTCP三次握手四次挥手 三、 浏览器输入URLURLDNS查询TCP/IP连接浏览器缓存强缓存协商缓存断开连接 浏览器渲染 四、 CDN总结 前言 本文记录OSI七层参考模型&#xff0c;和TCP/IP基本介绍。 一、OSI七层模型 七层参考模型分别是&am…

【C++入门到精通】C++入门 —— set multiset (STL)

阅读导航 前言一、set简介二、std::set1. std::set简介2. std::set的使用- 基本使用- std::set的模板参数列表- std::set的构造函数- std::set的迭代器- std::set容量与元素访问函数 3. set的所有函数&#xff08;表&#xff09; 三、std::multiset1. std::multiset简介 四、st…

农产品经营小程序商城的作用是什么?

农场或拥有稳定货源的商家更适合做线上生鲜蔬果生意&#xff0c;近些年随着线上电商崛起&#xff0c;如何打通并且加深同城、到店、快递货品销售场景成为商家们需要思考的&#xff1b;微信是企业商家重要的营销平台&#xff0c;因此在微信卖货增长很重要&#xff0c;但想要完善…

【中国知名企业高管团队】系列22:滴滴

大家好&#xff01; 今天华研荟的走进中国知名企业高管团队系列带大家认识滴滴。 滴滴公司是出行领域的先行者&#xff0c;也是一个典型样本。通过滴滴公司的名字变迁我们可以感受到滴滴公司的业务发展&#xff0c;这也是整个出行行业公司的发展路径&#xff1a; 第一阶段&a…

神经辐射场(NeRF)2023最新论文及源代码合集

神经辐射场&#xff08;NeRF&#xff09;作为一种先进的计算机图形学技术&#xff0c;能够生成高质量的三维重建模型&#xff0c;在计算机图形学、计算机视觉、增强现实等领域都有着广泛的应用前景&#xff0c;因此&#xff0c;自2020年惊艳亮相后&#xff0c;神经辐射场也成为…

C理解(三):结构体,共用体,枚举

结构体 结构体元素访问本质是指针方式,依据元素在结构体中的偏移量和元素类型进行访问 元素占字节数和类型占字节数不同,导致结构体的元素偏移量要复杂,因此结构体需要对齐访问 结构体对齐规则 结构体本身应在在4字节对齐处&#xff08;占4个字节&#xff09; 每个元素都对其存…

二、MAVEN的安装和配置

二、MAVEN的安装和配置 1.官网下载&#xff1a;http://maven.apache.org/download.cgi 2.解压文件包 1.apache-maven-3.5.2-bin.zip 直接解压到指定安装路径。 2.apache-maven-3.5.2-src.zip maven源码包。 3.配置环境变量&#xff0c;类似jdk环境配置 1.创建M2_HOME环境变…

关于操作系统与内核科普

关于操作系统与内核科普 一.什么是操作系统 操作系统是管理计算机硬件与软件资源的计算机程序。它为计算机硬件和软件提供了一种中间层。 操作系统是一种软件&#xff0c;主要目的有三种&#xff1a; 一.管理计算机资源&#xff0c;这些资源包括CPU&#xff0c;内存&#xff0…