代码模拟打字机(python)

回车符\r打印稿纸,time.sleep模拟停顿效果,一顿一顿的打字机效果就此呈现。


(笔记模板由python脚本于2024年12月27日 19:34:37创建,本篇笔记适合有基础编程能力的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


回车符\r打印稿纸
模拟打字机
(time.sleep模拟停顿效果)


本文质量分:

97 97 97

本文地址: https://blog.csdn.net/m0_57158496/article/details/144776330

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 模拟打字机
      • 1、 三个代码形式
    • 2、效果截屏图片
    • 3、代码解析
    • 4、函数封装
      • 4.1 代码脚本
      • 4.2 截屏图片


◆ 模拟打字机


1、 三个代码形式


python脚本

#!/usr/bin/env python3
from time import sleep# 示例文本
poems = '''点点之歌\n\n\n点点,\n夜空的繁星\n我眼球上的光斑\n思绪飘飞的火花\n\n点点,\n是丝雨湖面泛起的涟漪?\n还是时间悸动的纹波!\n点点 ,\n是符号结队信息的传递?\n还是爱恋的编织羁绊!\n点点,\n是旅人溢洒的岁月痕迹?\n还是远方遗落的印记!\n\n世界是一幅画布,\n点点是笔刷飞溅的色彩。\n世界是一段乐章,\n点点是旋律舞动的音符。\n世界是一部经典,\n点点是随风升腾的飞絮。\n\n点点,\n连接你我串并古今,\n编织出这个奇妙的时空——\n点点的霓虹。\n\n点点,\n细微的砂砾,\n构筑了我们容身的宇宙。\n点点,\n一个个鲜活的“自己”,\n装点这个世界不可或缺的元素'''
delay = 0.05
# 计算文本长度,以便在每次迭代中打印足够的空格
text_length = 42 # “稿纸”宽度,可以自行调节
typed_text = ""for char in poems:if char=='\n':typed_text = ""print() else:typed_text += char  # 将新字符添加到已打印的文本中print(typed_text + '.' * (text_length - (len(typed_text)*2)), end='\r')sleep(delay)  # 模拟打字机的打字速度# 打印完成后换行
print()# 优化
temp = ''
print(f"\n{'.'*text_length}", end='\r')
for char in poems:if char == '\n':print(f"\n{'.'*text_length}", end='\r')temp = ''else:temp += charprint(temp, end='\r')sleep(delay)print() # print() 之flush参数实现
print() 
for chars in poems.split('\n'):print('.'*text_length, end='\r')for char in chars:print(char, end='', flush=True)sleep(delay)print()



回页目录


2、效果截屏图片

  • 效果截屏图片
    在这里插入图片描述



回页目录


3、代码解析


代码说明:模拟打字机效果打印文本


  • 目的:

      本代码用于模拟打字机在稿纸上逐字符打印文本的效果。它通过回车符\r先行打印一行.当稿子,再逐字循环`打印/time.sleep’来模拟这个过程。

  • 功能概述:
    • 先行打印一行.表示空白稿纸,逐字符打印文本,并在每个字符打印后time.sleep
    • 遇到\n换行符,打印小圆点行(空白稿子),并开始新的一行文本打印。
    • 调整控制打印速度,以模拟你心仪的打字机打字速度。

  • 代码逻辑:
  1. 初始化变量:定义要打印的文本 poems 和每个字符打印之间的延迟时间 delay
  2. 计算装饰点数量(最初逻辑):根据设定的稿纸宽度 text_length 计算每一行需要打印的装饰点数量。
  3. 打印稿纸(优化逻辑):先行用\r打印一行......................做稿纸。
  4. 逐字符打印:遍历文本中的每个字符,如果是换行符,则打印一个换行并重置已打印文本;否则,将字符添加到已打印文本中,并在其后打印装饰点。
  5. 模拟打字速度:在每个字符打印后,使用 sleep 函数暂停一段时间,以模拟打字速度。

====== 主要代码块 ======

初始打印逻辑


typed_text = ""
for char in poems:if char == '\n':typed_text = ""print()else:typed_text += charprint(typed_text + '.' * (text_length - (len(typed_text)*2)), end='\r')sleep(delay)

  这段代码负责逐字符打印文本,并在每个字符后添加装饰点(稿纸)


优化后的打印逻辑


temp = ''
print(f"\n{'.'*text_length}", end='\r')
for char in poems:if char == '\n':print(f"\n{'.'*text_length}", end='\r')temp = ''else:temp += charprint(temp, end='\r')sleep(delay)

  这段代码优化了换行处理,确保在每行开始时打印装饰点行。


使用 flush参数的打印逻辑


for chars in poems.split('\n'):print('.'*text_length, end='\r')for char in chars:print(char, end='', flush=True)sleep(delay)

  这段代码通过 flush=True 参数确保每个字符都能立即打印,无需等待缓冲区填满。


  • 使用说明
    • 调整 text_length 变量以匹配所需的稿纸宽度。
    • 调整 delay 变量以改变打印速度。



回页目录


4、函数封装


  可以用函数封装“打字机”,让代码更为方便复用(函数调用)


4.1 代码脚本


python脚本

#!/usr/bin/env python3
from time import sleepdef typewriter(text: str, line_length: int, delay: float):''' 模拟打字机 '''print(f"\n{'.'*line_length}") # 打印空行typed_text = ""for char in text:if char=='\n':typed_text = ""print() else:typed_text += char  # 将新字符添加到已打印的文本中print(typed_text + '.' * (line_length - (len(typed_text)*2)), end='\r')sleep(delay)  # 模拟打字机的打字速度print(f"\n{'.'*line_length}") # 打印空行# 优化
def typewriter2(text: str, line_length: int, delay: float):''' 模拟打字机 '''print(f"\n{'.'*line_length}") # 打印空行temp = ''print(f"{'.'*text_length}", end='\r')for char in text:if char == '\n':print(f"\n{'.'*line_length}", end='\r')temp = ''else:temp += charprint(temp, end='\r')sleep(delay)print(f"\n{'.'*line_length}") # 打印空行# print() 之flush参数实现
def typewriter3(text: str, line_length: int, delay: float):''' 模拟打字机 '''print(f"\n{'.'*line_length}", end='\r') # 打印空sleep(delay)for chars in text.split('\n'):print(f"\n{'.'*line_length}", end='\r')sleep(delay)for char in chars:print(char, end='', flush=True)sleep(delay)print(f"\n{'.'*line_length}")if __name__ == '__main__':poems = '''点点之歌\n\n\n点点,\n夜空的繁星\n我眼球上的光斑\n思绪飘飞的火花\n\n点点,\n是丝雨湖面泛起的涟漪?\n还是时间悸动的纹波!\n点点 ,\n是符号结队信息的传递?\n还是爱恋的编织羁绊!\n点点,\n是旅人溢洒的岁月痕迹?\n还是远方遗落的印记!\n\n世界是一幅画布,\n点点是笔刷飞溅的色彩。\n世界是一段乐章,\n点点是旋律舞动的音符。\n世界是一部经典,\n点点是随风升腾的飞絮。\n\n点点,\n连接你我串并古今,\n编织出这个奇妙的时空——\n点点的霓虹。\n\n点点,\n细微的砂砾,\n构筑了我们容身的宇宙。\n点点,\n一个个鲜活的“自己”,\n装点这个世界不可或缺的元素!'''delay = 0.05
# 计算文本长度,以便在每次迭代中打印足够的空格text_length = 42 # “稿纸”宽度,可以自行调节typewriter(poems, text_length, delay)

4.2 截屏图片

  • 效果截屏图片
    在这里插入图片描述
      “三个”函数,效果完全一样。😋



回页首


上一篇:  《点点之歌》“意外”诞生记(世界是“点点”的,“点点”是世界的)
下一篇: 



我的HOT博:

  本次共计收集404篇博文笔记信息,总阅读量61.76w。数据采集于2024年11月25日 08:23:38,用时7分56.4秒。阅读量不小于6.00k的有 9 9 9篇。

  1. 让QQ群昵称色变的神奇代码
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    浏览阅读:6.2w
    点赞:25 收藏:89 评论:17
    (本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)

  2. Python列表(list)反序(降序)的7种实现方式
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    浏览阅读:1.3w
    点赞:9 收藏:40 评论:8
    (本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)

  3. pandas 数据类型之 DataFrame
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    浏览阅读:1.0w
    点赞:7 收藏:40 
    (本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)

  4. 个人信息提取(字符串)
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    浏览阅读:1.0w
    点赞:3 收藏:20 
    (本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)

  5. 罗马数字转换器|罗马数字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    浏览阅读:8.2k
    收藏:3 
    (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)

  6. 统计字符串字符出现的次数
    地址:https://blog.csdn.net/m0_57158496/article/details/130517025
    浏览阅读:8.1k
    点赞:5 收藏:24 
    (本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)

  7. Python字符串居中显示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    浏览阅读:8.0k
    点赞:1 收藏:12 评论:1
  8. 回车符、换行符和回车换行符
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    浏览阅读:6.7k
    点赞:2 收藏:4 
    (本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)

  9. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    浏览阅读:6.1k
    点赞:1 收藏:10 

推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

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

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

相关文章

让 AMD GPU 在大语言模型推理中崭露头角:机遇与挑战

在当今科技飞速发展的时代,大语言模型(LLM)的兴起彻底改变了人工智能领域的格局。从智能客服到文本生成,从知识问答到代码编写辅助,大语言模型的应用无处不在,深刻影响着我们的生活和工作。然而&#xff0c…

LLMs之o3:《Deliberative Alignment: Reasoning Enables Safer Language Models》翻译与解读

LLMs之o3:《Deliberative Alignment: Reasoning Enables Safer Language Models》翻译与解读 导读:2024年12月,这篇论文提出了一种名为“审慎式对齐 (Deliberative Alignment)”的新方法,旨在提高大型语言模型 (LLM) 的安全性。论…

音视频入门基础:MPEG2-TS专题(24)——FFmpeg源码中,显示TS流每个packet的pts、dts的实现

音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…

微信流量主挑战:用户破16!新增文档转换(新纪元3)

朋友们,报告好消息!我的小程序用户数量已经涨到16个了!没错,真没拉朋友圈亲戚好友来撑场子,全靠实力(和一点点运气)吸引了16位陌生小伙伴光临!这波进步,连我自己都感动了…

顶顶通呼叫中心中间件mod_cti模块安全增强,预防盗打风险(mod_cti基于FreeSWITCH)

文章目录 前言联系我们mod_cti版本支持安全加强说明 前言 FreeSWITCH暴露在公网最大的风险就是被不法之人盗打 出现盗打的主要原因以下几点: 分机密码太简单或者密码泄露了拨号方案配置不合理sofia配置错误 所以我们给顶顶通呼叫中心中间件添加了安全加强功能&am…

【Halcon】例程讲解:基于形状匹配与OCR的多图像处理(附图像、程序下载链接)

1. 开发需求 在参考图像中定义感兴趣区域(ROI),用于形状匹配和文本识别。通过形状匹配找到图像中的目标对象位置。对齐多幅输入图像,使其与参考图像保持一致。在对齐后的图像上进行OCR识别,提取文本和数字信息。以循环…

产品初探Devops!以及AI如何赋能Devops?

DevOps源自Development(开发)和Operations(运维)的组合,是一种新的软件工程理念,旨在打破传统软件工程方法中“开发->测试->运维”的割裂模式,强调端到端高效一致的交付流程,实…

python+PyMuPDF库:(一)创建pdf文件及内容读取和写入

目录 文档操作 打开文档 获取文档信息 删除页 复制页 移动页 选择重构合并 保存关闭 页对象操作 内容读取 获取页对象的字体样式 插入文本标签 插入文本内容 字体设置 insert_text添加文本 insert_textbox添加文本 插入图片 获取页面注释、链接、表单字段 …

开源诊断工具Arthas

说明: 1、需要先要安装配置好jdk。 2、你的虚拟机得有网,没有网就按照压缩包上传解压。然后直接看三 一、官网 https://arthas.aliyun.com/doc/quick-start.html#_1-%E5%90%AF%E5%8A%A8-math-game 二、下载和卸载 # 下载 curl -O https://arthas.al…

VisionPro开发使用交互反馈系统(Affordance System)

XR Interaction Toolkit 提供了一个affordance system 可供性系统,使用户能够创建对交互状态的视觉和听觉反馈。一般的信息流从向Affordance State Provider场景中添加一个(通常是可交互的)并将其指向我们要监视其交互状态的可交互对象开始。…

如何在 Ubuntu 22.04 上安装并开始使用 RabbitMQ

简介 消息代理是中间应用程序,在不同服务之间提供可靠和稳定的通信方面发挥着关键作用。它们可以将传入的请求存储在队列中,并逐个提供给接收服务。通过以这种方式解耦服务,你可以使其更具可扩展性和性能。 RabbitMQ 是一种流行的开源消息代…

力扣矩阵-算法模版总结

lc-73.矩阵置零-(时隔14天)-12.27 思路:(23min22s) 1.直接遍历遇0将行列设0肯定不行,会影响后续判断,题目又要求原地算法,那么进一步考虑是否可以将元素为0,其行列需要设为0的位置给存储下来,最后再遍历根据…

OCR实践-问卷表格统计

前言 书接上文 OCR实践—PaddleOCROCR实践-Table-Transformer 本项目代码已开源 放在 Github上,欢迎参考使用,Star https://github.com/caibucai22/TableAnalysisTool 主要功能说明:对手动拍照的问卷图片进行统计分数(对应分数…

yarn list --pattern vuex-module-decorators

dgqdgqdeMac-mini spid-admin % yarn list --pattern vuex-module-decorators yarn list v1.22.22 └─ vuex-module-decorators0.16.1 ✨ Done in 0.24s.好的,这段代码是一个典型的 Vuex 模块定义,使用了 vuex-module-decorators 库。这个库为 Vuex 提…

用Python写炸金花游戏

文章目录 **代码分解与讲解**1. **扑克牌的生成与洗牌**2. **给玩家发牌**3. **打印玩家的手牌**4. **定义牌的优先级**5. **判断牌型**6. **确定牌型优先级**7. **比较两手牌的大小**8. **打印结果** 完整代码 以下游戏规则: 那么我们要实现的功能,就是…

day19-Linux软件包

科普,什么是代码文件。 电脑程序Program,就是某一个编程语言编写的一个代码文件,里面包含了该语言特有的指令,以及各种字符、符号。 linux自带的network管理脚本,shell脚本 什么是软件程序。 软件程序,就…

图像处理-Ch4-频率域处理

Ch4 频率域处理(Image Enhancement in Frequency Domain) FT :将信号表示成各种频率的正弦信号的线性组合。 频谱: ∣ F ( u , v ) ∣ [ R 2 ( u , v ) I 2 ( u , v ) ] 1 2 |F(u, v)| \left[ R^2(u, v) I^2(u, v) \right]^{\frac{1}{2}} ∣F(u,v)…

Vue BPMN Modeler流程图

1、参考地址 git clone https://github.com/evanyangg/vue-bpmn-modeler.git 2、安装bpmn.js npm install bpmn-js --save 3、使用bpmn.js <template><div class"containers"><div class"canvas" ref"canvas"></div&g…

STM32完全学习——FATFS0.15移植SD卡

一、下载FATFS源码 大家都知道使用CubMAX可以很快的将&#xff0c;FATFS文件管理系统移植到单片机上&#xff0c;但是别的芯片没有这么好用的工具&#xff0c;就需要自己从官网下载源码进行移植。我们首先解决SD卡的驱动问题&#xff0c;然后再移植FATFS文件管理系统。 二、SD…

5、栈应用-表达式求值

本章内容使用上述栈结构函数&#xff0c;来完成表达式求值操作。 表达式例如&#xff1a;3*(7-2) 或者 (0-12)*((5-3)*32)/(22) 。 1、实现思路 a、建立OPTR&#xff08;运算符&#xff09;和OPND&#xff08;数字&#xff09;两个栈&#xff0c;后输入字符串以结束 b、自左向…