完游戏的朋友们,是不是看到那种加载加载进度条,感觉特别不错呢,所以今天就来看看文本进度条怎么做。

1.基本的多行文本进度条

import time

scale = 10  # 变量scale表示输出进度条的精度
print("------执行开始------")
for i in range(scale + 1):
    a, b = '**' * i, '..' * (scale - i)
    c = (i / scale) * 100
    print("%{:^3.0f}[{}->{}]".format(c, a, b))
    time.sleep(0.1)  # 调用time中的sleep(t),将当前程序挂起t s,t可以是小数。
print("------执行结束------")

程序运行结果如下:

[Python急救站]文本进度条-LMLPHP

2.单行动态刷新

import time

for i in range(101):
    print("\r{:3}%".format(i), end="")
    time.sleep(0.05)

程序运行结果如下:

[Python急救站]文本进度条-LMLPHP

[Python急救站]文本进度条-LMLPHP

由于Pycharm集成环境本身屏蔽了单行刷新功能,如果要执行可以使用控制台(cmd)或者用Python编辑器的IDLE是执行这个代码

运行结果如下:

[Python急救站]文本进度条-LMLPHP3.带刷新的文本进度条

将上面两个程序再整合一下,并加上计时器,就很像我们的下载时间是吧

# 微实例3.7.3带刷新的文本进度条
import time

scale = 50
print("执行开始".center(scale // 2, '-'))
t = time.perf_counter()
# 原来采用time.clock,但是Python3.8以上把这个函数去掉了,但是库里还包含着。
# 可以调用time.perf_counter() 或process_time()替换
for i in range(scale + 1):
    a = '*' * i
    b = '.' * (scale - i)
    c = (i / scale) * 100
    t -= time.perf_counter()
    s = t / 100000  # 如果调用的是time.clock就不用做除法转化
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, a, b, -s), end='')
    time.sleep(0.05)
print("\n" + "执行结束".center(scale // 2, '-'))

程序运行结果如下:

[Python急救站]文本进度条-LMLPHP[Python急救站]文本进度条-LMLPHP

好了去试试吧!

对了,留一个问题,进度条反映了软件运行的执行速度,请思考并给出至少3种提高软件执行速度的方法。

11-04 22:03