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,'-'))

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

  • 相关阅读:
    PAT 1035. 插入与归并(25)
    PAT 1034. 有理数四则运算(20)
    PAT 1033. 旧键盘打字(20)
    PAT 1032. 挖掘机技术哪家强(20)
    PAT 1031. 查验身份证(15)
    PAT 1030. 完美数列(25)
    PAT 1029. 旧键盘(20)
    PAT 1028. 人口普查(20)
    PAT 1027. 打印沙漏(20)
    PAT 1026. 程序运行时间(15)
  • 原文地址:https://www.cnblogs.com/chy8/p/9452373.html
Copyright © 2011-2022 走看看