python3《文本进度条设计》

需求分析

采用字符串方式打印可以动态变化的文本进度条

进度条需要能在一行中逐渐变化

问题分析

如何获得文本进度的变化时间?

采用sleep()模拟一个持续的进度条

# TexproBarV1.py

import time

scale = 10

print("-----执行开始-----")

for i in range(scale+1):

a = '*' * i

b = "." * (scale-i)

c = (i/scale)*100

print("{:^3.0f}%[{}->{}]".format(c,a,b))

time.sleep(0.1)

print("-----执行结束-----")

单行动态刷新

刷新的关键是\r

刷新的本质是:使用打印的字符覆盖之前的字符

不能换行:print()需要被控制

要能退回:打印后光改退回到之前的位置\r

# TexproBarV2.py

import time

for i in range (101):

print("\r {:3}%".format(i),end="")

time.sleep(0.1)

完整显示效果

# TexproBarV3.py

import time

scale = 50

print("执行开始".center(scale//2,"_"))

start = time.perf_counter()

for i in range(scale+1):

a = '*'* i

b = '.'*(scale-i)

c=(i/scale)*100

dur = time.perf_counter() - start

print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')

time.sleep(0.1)

print("\n"+"执行结束".center(scale//2,'_'))

举一反三

计算问题扩展

文本季度条程序使用了perf_counter()计时

计时方法适合各类需要统计时间的计算问题

例如:比较不同算法时间,统计部分程序运行时间

进度条应用

在任何运行时间需要较长的程序中增加进度条

在任何希望提高用户体验的程序增加进度条

进度条是人机交互的纽带之一

进度条的不同设计函数

关注韩黑桃 学习更多python小知识

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180612A0RFNG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券