Python关于print的操作(倒计时、转圈显示、进度条)

1. 简介

Python是一门高级的编程语言,也是人工智能领域中使用最为广泛的编程语言之一。在Python中,print()是最常用的内置函数之一,它可以用于显示文本、变量、数据等等。

在本篇文章中,我们将介绍如何使用Python中的print函数展示有计划的信息,包括倒计时、转圈显示和进度条等。

2. 倒计时

倒计时是展示有计划的信息的一种有效方式,例如某些程序启动前的等待时间、剩余时间等等。在Python中,我们可以通过for循环来实现倒计时功能。

2.1 实现代码

import time

def countdown(t):

while t:

mins, sec = divmod(t, 60)

timer = '{:02d}:{:02d}'.format(mins, sec)

print(timer, end='\r')

time.sleep(1)

t -= 1

countdown(5)

2.2 代码解释

上述代码中,我们定义了一个名为countdown的函数,该函数的参数是倒计时的时间t(以秒为单位)。在函数体中,我们定义了一个while循环,当t不为0时,循环将一直执行。

在循环中,我们使用Python内置函数divmod()将t分解为分钟和秒。我们还定义了一个名为timer的字符串变量,该变量存储格式为“xx:xx”的倒计时时间。

在每一次循环中,我们使用print()函数来展示倒计时。我们使用end参数来指定结束符号为回车符(\r),这使得每次倒计时输出都会出现在同一行,达到倒计时的效果。我们还使用了time库的sleep()函数,使程序停顿1秒钟,以便倒计时效果更明显。

3. 转圈显示

另一种展示有计划信息的方式是转圈显示,即将一个固定字符依次改变为其他字符,达到旋转的效果。在Python中,我们可以使用类似倒计时的方法来实现。

3.1 实现代码

import itertools

import sys

import time

def spinning_cursor():

while True:

for cursor in '|/-\\':

yield cursor

spinner = spinning_cursor()

for i in range(50):

sys.stdout.write(next(spinner))

sys.stdout.flush()

time.sleep(0.1)

sys.stdout.write('\b')

3.2 代码解释

上述代码中,我们定义了一个名为spinning_cursor的生成器函数,该函数不断生成'|/-\\'中的每个字符,达到旋转的效果。

在主循环中,我们使用for循环来迭代生成器函数返回的下一个字符,并使用sys.stdout.write()函数将其写入stdout的标准输出流中。我们还使用sys.stdout.flush()函数将输出流刷新,以确保字符能够立即显示。我们使用time.sleep()函数来停顿0.1秒,使旋转效果更明显。

最后,我们使用sys.stdout.write('\b')函数,它在当前行中后退一个字符,来模拟删除先前显示的旋转字符,以便在下一个字符显示时进行覆盖。

4. 进度条

进度条是一种非常常见的展示有计划信息的方式,例如文件上传、下载和复制等操作。在Python中,我们可以使用tqdm库来实现进度条的功能。

4.1 安装tqdm库

!pip install tqdm

如果您在Jupyter Notebook中运行此代码,需要在前面加上感叹号才能运行pip命令。

4.2 实现代码

from tqdm import tqdm

import time

for i in tqdm(range(100)):

time.sleep(0.02)

4.3 代码解释

上述代码中,我们首先从tqdm库中导入tqdm函数。在主循环中,我们使用tqdm函数来迭代从0到99的数字,并提供可选的描述字符串(如果需要)。我们还使用time.sleep()函数来停顿0.02秒,以便进度条效果更明显。

5. 小结

在本篇文章中,我们介绍了如何在Python中使用print函数展示有计划的信息,包括倒计时、转圈显示和进度条等。这些方法可以为您的程序增添一份美感和交互性,让您的程序更加优秀。

最后,我们需要注意的一点是,展示有计划的信息应该是程序的一部分,它应该显示清晰并且易于理解。对于一些长时间运行的程序,展示有计划的信息也可以使用户感到安慰和信任。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签