1、print()函数
利用print()函数实现简单的非刷新文本进度条
1.1 基本思想:
按照任务执行百分比将整个任务划分为100个单位,每执 行N%输出一次进度条。每一行输出包含进度百分比,代表已完成的 部分(**)和未完成的部分(..)的两种字符,以及一个跟随完成度前进的 小箭头,
风格如下:%10 [*****->.............................................]
1.2 代码示例:
import timescale = 10print("------执行开始------")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)print("------执行结束------")
1.3 效果:
2、单行动态刷新
IDEA输出没有单行刷新,因为IDLE本身屏蔽了单行刷新功能,如果希望获得刷新效果,请使用PyCharm执行
2.1 代码示例
import timefor i in range(101): print("\r{:2}%".format(i), end="") time.sleep(0.05)
2.2 结果:
3、带刷新的文本进度
3.1 代码示例
import timescale = 50print("{0:-^20}".format("执行开始"))for i in range(scale + 1): a = '*' * i b = '.' * (scale - i) c = (i/scale) * 100 print("\r{:^3.0f}%{}->{}".format(c,a,b),end="") time.sleep(0.5)print("")print("{0:-^20}".format("执行结束"))
3.2 效果:
4、进度条设计函数
设计名称 | 趋势 | 设计函数 |
Liner | Constant | f(x) = x |
Early Pause | Speeds up | f(x) = x+(1-sin(x*π*2+π/2))/-8 |
Late Pause | Slows down | f(x) = x+(1-sin(x*π*2+π/2))/8 |
Slow Wavy | Constant | f(x) = x+sin(x*π*5)/20 |
Fast Wavy | Constant | f(x) = x+sin(x*π*20)/80 |
Power | Speeds up | f(x) = (x+(1-x)*0.03)2 |
Inverse Power | Slows down | f(x) = 1+(1-x)1.5 *-1 |
Fast Power | Speeds up | f(x) = (x+(1-x)/2)8 |
Inv. Fast Power | Slows down | f(x) = 1+(1-x)3 *-1 |