020 实例4-文本进度条

1、"文本进度条"问题分析

1.1 文本进度条

用过计算机的都见过算法

  • 进度条什么原理呢?

020-实例4-文本进度条-01.jpg?x-oss-process=style/watermark

1.2 需求分析

  • 采用字符串方式打印能够动态变化的文本进度条
  • 进度条须要能在一行中逐渐变化

1.3 问题分析

如何得到文本进度条的变化时间?函数

  • 采用sleep()模拟一个持续的进度
  • 彷佛不那么难

2、"文本进度条"简单的开始

2.1 简单的开始

# TextProBarV1.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("------执行结束------")
------执行开始------
 0 %[->..........]
10 %[*->.........]
20 %[**->........]
30 %[***->.......]
40 %[****->......]
50 %[*****->.....]
60 %[******->....]
70 %[*******->...]
80 %[********->..]
90 %[*********->.]
100%[**********->]
------执行结束------

3、"文本进度条"单行动态刷新

3.1 单行动态刷新

刷新的关键是 \rspa

  • 刷新的本质是:用后打印的字符覆盖以前的字符
  • 不能换行:print()须要被控制
  • 要能回退:打印后光标退回到以前的位置 \r

注意:IDLE如Pycharm屏蔽了\r功能设计

# TextProBarV2.py

import time

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

4、"文本进度条"实例完整效果

# TextProBarV3.py

import time

scale = 10
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, '-'))
-执行开始
100%[**********->]1.03s
-执行结束

5、"文本进度条"触类旁通

5.1 触类旁通

计算问题扩展code

  • 文本进度条程序使用了perf_counter()计时
  • 计时方法适合各种须要统计时间的计算问题
  • 例如:比较不一样算法时间、统计部分程序运行时间

进度条应用orm

  • 在任何运行时间须要较长的程序中增长进度条
  • 在任何但愿提升用户体验的应用中增长进度条
  • 进度条是人机交互的纽带之

020-实例4-文本进度条-02.jpg?x-oss-process=style/watermark

文本进度条的不一样设计函数blog

设计名称 趋势 设计函数
Linear 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+(1-sin(x*π*2+π/2)/8\)
Fast Wavy Constant \(f(x) = x+(1-sin(x*π*2+π/2)/8\)
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\)
Inverse Fast Power Slows down \(f(x) = 1+{(1-x)}^3*-1\)
相关文章
相关标签/搜索