【Python】使用Print函数制作旋转的动画

news2024/9/25 7:15:47

1. 引言

如果你想有效地学习Python,这篇文章可能不适合你。接下来的一切都可能是愚蠢、和浪费时间,但哪有怎么样,毕竟这玩意很有趣呀!

2. 好玩的脚本

首先,我们来看两个好玩的Python脚本,如下:

import time

d = {'-':'\\', '\\':'|', '|':'/', '/':'-'}
x = '-'
while True:
    print((x+' ')*20, end='\r')
    x = d[x]
    time.sleep(0.25)

在终端中运行上述脚本,可以得到结果如下:

在这里插入图片描述
在来看第二个脚本,如下所示:

import time

d = {'+':'x', 'x':'+'}
x = '+'
while True:
    print((x+' ')*20, end='\r')
    x = d[x]
    time.sleep(0.25)

在终端中,运行上述脚本,可以得到以下结果:
在这里插入图片描述

3. 理解转义字符\r

首先我们需要理解Python中的转义字符\r的含义,一般来说,\r 是一个转义符,用于将光标移回到行首。换句话说,它允许我们在以前打印过的东西上进行打印。

不是很好理解,那我们来看个例子,如下:

import time

print(1, end='\r')
time.sleep(1)

print(2, end='\r')
time.sleep(1)

print(3)

上述代码中,time.sleep(1)使我们的程序在1秒内不执行任何操作。如果运行此程序,那么它将首先打印1。1秒后,数字1变成数字2。再过一秒钟,数字2又变成了数字3。这是因为我们在函数print中使用了end='\r'。在我们打印数字1之后,\r不是将光标移动到新行,而是将光标移回行首。因此,打印2将覆盖现有的1

4. 解释

接着我们来尝试解释开头的两个脚本,我们不妨来将其拆解,如下:

import time

print('-', end='\r')
time.sleep(1)

print('\\', end='\r')
time.sleep(1)

print('|', end='\r')
time.sleep(1)

print('/', end='\r')
time.sleep(1)

print('-')

通过上一节的解释,大家应该可以猜到这段代码首先会打印-,接着输出\,接着输出|,接着输出/。由于我们使用了转义字符\r,每次新的打印字符将会覆盖上一次的打印字符,这就会造成线旋转的动画效果。
将其扩展,使用while循环自动执行此操作,连续打印输出20个字符,我们就得到了开头我们看到的内容!

5. 总结

本文重点介绍了利用Python中的转义字符通过每次覆盖上一次的打印来实现旋转动画效果,并给出了相应的代码示例。

您学废了吗?

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

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

相关文章

开关电源基础03:正激和反激开关电源拓扑(3)-反激拓扑

说在开头:关于不确定性原理 1927年2月,那个冬天对海森堡来说简直是一场噩梦,越来越多的人转向了薛定谔和他那该死的波动理论,把他的矩阵忘得一干二净;而最让他伤心和委屈的是,玻尔也转向了他的对立面&…

大规模并行处理架构Doris编译部署篇

目录 1 Doris编译1.1 使用 Docker 开发镜像编译(推荐)1.1.1 遇到的问题1.1.1 遇到的问题 1.2 直接编译(CentOS/Ubuntu)1.2.1 环境准备1.2.2 系统依赖(一次性安装)1.2.3 手动安装系统依赖1.2.3.1 CMake 3.11…

Linux驱动开发:SPI子系统

1、SPI简介 1.1 四根线 MISO:主设备数据输入,从设备数据输出。 MOSI:主设备数据输出,从设备数据输入。 SCLK:时钟信号,由主设备产生。 CS: 从设备片选信号,由主设备控制。 1.2…

《string类的使用介绍》

本文主要介绍string的常见的接口的使用 文章目录 一、什么是string类二、string类的使用1、string类对象的常见构造2、string类对象的容量操作3、string类对象的访问及遍历操作①operator[ ]的用法②迭代器③范围for 4、string类对象的修改操作①push_back②append③operator&a…

刷题笔记8| 344.反转字符串, 541. 反转字符串II, 剑指Offer 05.替换空格

344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 输入:s ["h","e",…

索引—MySQL

文章目录 1.定义以及相关知识1.1定义1.2数据库保存数据的基本单位 2.MySQL中索引分类2.1B树和B树2.2主键索引(聚簇索引)2.3非聚簇索引2.4覆盖索引2.5复合索引(联合索引)2.6基于B树的索引2.7hash索引 1.定义以及相关知识 1.1定义 …

okio篇--总览

看源码第一步,先去看看官网对okio的介绍: Okio 首先第一段: okio对bytes,做了两种形式的封装:ByteString和Buffer。 其中ByteString,是针对字符类的数据,内部封装一个byte数组,封…

网络协议与攻击模拟-06-ICMP重定向

■0网络不可达 ■2协议不可达 类型4源抑制 类型5重定向 2、 ICMP 常见的报文 响应请求 使用 ping 请求( type 0)响应( type 8) 目标不可达 type 3 源抑制 源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于 I…

Django初识

1、简介 Django,是用python语言写的开源web开发框架,并遵循MVC设计。劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005年7月在BSD许可证下发布。这个名称来源于比利时的爵士音乐家DjangoReinhardt&#…

操作系统第二章——进程与线程(中)

和光同尘,与时舒卷 文章目录 2.2.1 调度的概念,层次知识总览调度的基本概念高级调度低级调度中级调度三层调度的联系,对比进程的挂起态和七状态模型知识回顾 2.2.2 进程调度的时机,切换与过程,方式知识总览进程调度的时…

【C++】第二站:类和对象(中)拷贝构造函数

文章目录 一、拷贝构造函数的概念二、拷贝构造函数的特性三、深度剖析拷贝构造函数不采用引用会无限递归的原因1.C对于传参的两个规定2.如何解开这个无穷递归 四、拷贝构造函数的其他特性五、拷贝构造的一些使用场景 一、拷贝构造函数的概念 拷贝构造函数:只有单个形…

2.2 Linux控制台访问CLI

系列文章目录 第1章 Linux Shell简介 第2章 Shell基础 <本章所在位置> 第3章 Bash Shell基础命令 第4章 Bash Shell命令进阶 第5章 Linux Shell深度理解 第6章 Linux环境变量 第7章 Linux文件权限 第8章 Linux文件系统的管理 第9章 Linux软件安装 第10章 Linux文本编辑器…

【MySQL】搭建出高可用性、高性能的MySQL集群要考虑的事是蛮多的,你看看会不会?

MySQL 架构设计数据同步负载均衡安全性监控和维护注意的点1. 确定节点数量和配置2. 选择合适的硬件和网络设备3. 避免单点故障4. 定期备份和恢复测试5. 定期更新和升级 Java工程师使用集群步骤最后 MySQL集群是一种高可用性、高性能的数据库解决方案&#xff0c;它可以通过多个…

基于Django实现的TMS物流管理系统(附源码下载)

基于Django实现的物流管理系统&#xff08;TMS&#xff0c;Transportation Management System&#xff09; 特点 前端基于Bootstrap 4框架和AdminLTE框架。使用MySQL作为数据库后端。实现了运单录入、发车出库、到货签收、客户签收等基本功能。拥有较为完善的报表功能和财务管…

Java—JDK8新特性—Lambda表达式【内含思维导图】

目录 JDK8新特性 2.Lambda表达式 思维导图 2.1 什么是Lambda表达式 2.2 为什么使用Lamdba表达式 2.3 Lambda表达式基本语法 2.4 类型推断 2.5 Lambda练习 2.6 Lambda常用场景 JDK8新特性 官网提供网址&#xff1a;JDK 8 Features 2.Lambda表达式 思维导图 2.1 什么是…

浅谈Dom和Bom(清晰易懂版)

DOM&#xff08;文档对象模型&#xff09; DOM 是浏览器提供的一种操作网页内容和结构的 API&#xff0c;它将 Web 页面表示为一个树形结构&#xff0c;其中每一个 HTML 元素都是一个节点&#xff0c;可以通过 DOM API 对其进行访问和操作。DOM API 包括了一系列方法和属性&am…

Shapes布局-文字环绕动画

文章目录 说明实现以及语法动画渐变裁切图形变换的动画效果 说明 Shapes也有形状、图形的意思&#xff0c;我们可以在页面中创建图形&#xff0c;并让内容环绕在定义的图形边上。 Shapes的官方文档&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Shapes/F…

YOLOv8 来了,快速上手实操

目录 YOLOv8的优点安装ultralytics使用YOLOv8n在图像上进行PredictTasks与 ModesModes - 模式分类Tasks - 任务分类 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;程序员半夏 , 一名全栈程序员&#xff0c;擅长使用各种编程语言和框架&#xff0c;如JavaScript、React、N…

SpringBoot集成Redis—缓存穿透解决方案与哨兵模式实战

目录 1、环境准备 1&#xff09;pom.xml引入Redis依赖 2) 演示业务场景 2、SpringBoot集成Redis单机模式 1&#xff09; 通过MyBatis逆向工程生成实体Bean和数据持久层 2) application.yml 中配置redis连接信息 3) 启动redis服务 4) XinTuProductRedisController类 5…

一图看懂 yarl 模块:为URL解析和更改提供了方便的URL类, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 yarl 模块&#xff1a;为URL解析和更改提供了方便的URL类, 资料整理笔记&#xff08;大全&#xff09; 摘要模块图类关系图模块全展开【yarl】统计常量模块1 yarl._quoting…