采用字符串方式打印可以动态变化的文本进度条,进度条需要能在一行中逐渐变化
要求如下:
(1) 采用sleep()模拟一个持续的进度,获得文本进度条的变化时间;
(2) 通过print()函数实现单行动态刷新,在print()函数中更换参数end的默认值为’’,每次使用print()函数输出时不能换行;
(3) 要能回退:打印后光标到之前的位置 \r。
#引入时间库
import time
#规定宽度
scale = 50
#开始时间
start = time.perf_counter()
#开始执行 居中(宽度,填充字符)
print("开始执行".center(scale//2,'-'))
#开始循环进行模拟进度条 要显示100%
for i in range(scale+1):
#计算百分比
a = i/scale * 100
#表示左侧已经执行的字符串
b = i * '*'
#表示右侧未执行的字符串
c = (scale-i)*'.'
#表示进行时间
d = time.perf_counter() - start
#打印结果 并移动光标到最前不换行使得结果可刷新 显示最新进度
print("\r{:3.0f}%[{}->{}]{:.2f}".format(a,b,c,d),end="")
#模拟下载进度
time.sleep(0.1)
#结束打印结束 记得换行
print("\n"+"结束执行".center(scale//2,'-'))