自学内容网 自学内容网

代码模拟打字机(python)

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


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


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


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


等风来,不如追风去……


回车符\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 += char
        print(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 += char
    print(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 += char
        print(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 sleep


def 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 += char
            print(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 入门指南【Python 3.6.3】


好文力荐:


CSDN实用技巧博文:



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

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!