Python学习笔记 八 (time库实例练习-文本进度条)
在前面对time库的学习后,现在通过time库实例-文本进度条来巩固所学知识,希望能对你我有益。
目录
- 问题分析
- 编写代码
- 总结
一、问题分析
这次练习主要是实现一个文本进度条,其中涉及的问题是如何获取程序的进展程度,如何实现刷新,如何一直展示进展程度等问题。
解决办法:
- 利用time库中的perf_counter()来获取程序运行时间
- 由于刷新的本质是后面的覆盖前面的,所以利用\r来实现每次运行光标都恢复到最前面,来实现刷新的效果。
- 利用循环来实现一直展示到结束。
- 对print()进行控制,不让print()换行,利用end = ’ ',实现单行输出。
二、编写代码
#文本进度条的实现
import time
long = 50
print("程序开始".center(long,"*"))
start = time.perf_counter()
for i in range(long + 1):
a = '=' * i #将 ‘ = ’ 复制 i 次
b = '*' * (long - i)
c = (i / long) * 100 #百分数的计算
t = time.perf_counter() - start #获取每次刷新程序运行时间
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, a, b, t),end = '')
time.sleep(0.1) #使程序每次执行后暂停一下,便于观察刷新效果
print("\n" + "程序结束".center(long,'*'))
由于IDLE是开发环境而不是运行环境,所以在使用IDLE运行时,IDLE会屏蔽 \r ,因此我们需要在Windows环境下或其他环境下运行,下面是通过Windows环境下运行的。
- win键 + R 输入cmd打开控制台
- 使用cd命令进入程序所在的文件夹
- 使用Python 文件名.py运行程序就会得到如下效果
程序效果
三、总结
- 首先我两次调用了time库中的perf_counter()计算差值来获取程序运行时间。
- 由于计算机运算速度较快,我利用sleep()在每次执行时进行短暂暂停,使得刷新效果能被人观察到。
- 使用控制槽 { }.format()来控制输出格式。
- 使用字符串处理“字符串”.center(宽度,填充内容)来控制提示信息的格式化输出。
- 在print()的输出时参数中添加end = ’ '使print()不换行,默认是换行的。
- format()函数的参数和槽之间在没有指定的情况下是按顺序一一对应的,若是在槽引导符前指定了所对应参数,优先使用指定的关系。
待续…