zoukankan      html  css  js  c++  java
  • 第七章 文本进度条的实现

    文本进度条

    大家都见过程加载的时候的文本进度条

    进度条的原理是什么呢?

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

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

    问题分析:

    如何获取一个文本进度条的变化时间呢?

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

    2、似乎不那么难

    简单的开始:

     1 #TextProBarV1.py
     2 import time
     3 scale = 10
     4 print("------执行开始------")
     5 for i in range(scale+1):
     6     a = '*' * i
     7     b = '.' * (scale - i)
     8     c = (i/scale)*100
     9     print("{:^3.0f}%[{}->{}]".format(c,a,b))
    10     time.sleep(0.1)
    11 print("------执行结束------")

    执行结果如下图所示:

     单行动态刷新:

      刷新的关键是

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

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

    3、需要回退:打印后光标退回到之前的位置

    1 #TextProBarV2.py
    2 import time
    3 for i in range(101):
    4     print("
    {:3}%".format(i), end="")
    5     time.sleep(0.1)

    如果我们在python自带的idle里面运行将会有如下效果

    原因是IDLE屏蔽了 功能

    在cmd命令行中运行即可

    可以看到如上代码只有百分比数字显示,并不是我们常见的完整的进度条,我们继续完善代码:

     1 #TextProBarV3.py
     2 import time
     3 scale = 50
     4 print("执行开始".center(scale//2, "-"))
     5 start = time.perf_counter()
     6 for i in range(scale+1):
     7     a = '*' * i
     8     b = '.' * (scale - i)
     9     c = (i/scale)*100
    10     dur = time.perf_counter() - start
    11     print("
    {:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
    12     time.sleep(0.1)
    13 print("
    "+"执行结束".center(scale//2,'-'))

    执行后的运行结果如下图所示:

  • 相关阅读:
    【linux基础err】bash: cannot create temp file for here-document: No space left on device
    【python基础】argparse模块
    第23课 优先选用make系列函数
    第22课 weak_ptr弱引用智能指针
    第21课 shared_ptr共享型智能指针
    第20课 unique_ptr独占型智能指针
    第19课 lambda vs std::bind
    第18课 捕获机制及陷阱
    第17课 lambda表达式
    第16课 处理万能引用和重载的关系
  • 原文地址:https://www.cnblogs.com/chy8/p/9452373.html
Copyright © 2011-2022 走看看