知足常乐

日常学习的记录与分享

Python-10行代码实现文本进度条

1 本次实现文本进度条准备工作

1.熟悉python基本语法 循环语句 格式化输出

format 格式化输出

In :            '{   },{   }'.format ( 'kzc' , 18 )
字符串中槽的默认顺序   0    1                0     1   # format中参数的顺序
out :'kzc,18'

format 格式控制

槽内部对格式化的配置方式
{<参数序号> : <格式控制标记>}     #无参数序号时默认对应位置
:       <填充>           <对齐>        <宽度>         <,>      <.>    <类型>
|          |	           |             | 	       |        |       |
引导符 用于填充单个字符     <  左对齐  槽设定的输出宽度    千位符   精度     整形
                          >  右对齐                                     浮点型
                          ^ 居中对齐

例如

print ("{0:=^20}".format("PYTHON"))
#输出"PYTHON"字符串并且居中,总长度为20 剩余部分用"="填充
out: "=======PYTHON======="

2.熟悉python time库的使用

时间获取      time()   ctime()   gmtime()

时间格式化  strftime()  strptime()

程序计时   sleep()   perf_counter()

3.熟悉基本运算符含义

+ – * /  %   //(除法取证)  **(幂)

2 战斗开始

进度条从0%到100% 假设我们没每10%设置一个进度条 那么 我么需要11个进度条

每个进度条 类似如下

 0 %[->..........]
100%[**********->]

从0% 到100%

我们需要控制. * 的个数,并格式化输出  将百分数控制在首部3格居中位置

import time
scale = 10
print("------执行开始------")
for i in range(scale+1):   #11次循环
    a = '*' * i   #控制*个数
    b = '.' * (scale - i)   #控制.个数
    c = (i/scale)*100        #控制百分数
    print("{:^3.0f}%[{}->{}]".format(c,a,b))
    time.sleep(0.1)
print("------执行结束------")

那如果我们想在一行显示一个安装的进度条呢, 就像我们在shell中安装软件进度条那种

1 我们需要了解一个特殊符号\r

\r是回到行首, 那么我们实现的思路是不是输出从0到100 共101个字符串每次覆盖输出  即可完成

time库中的perf_counter()方法

获取当前系统时间  那么我们每执行一次获取一次时间减去初始时间就可让时间跑起来

3.center方法

center(输出宽度, 占位符)

import time
scale = 50
print("执行开始".center(scale//2, "-"))   #scale除以2取整
start = time.perf_counter()  #获取初始时间
for i in range(scale+1):  #执行51次(每2%执行一次)
    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)  #睡眠0.1秒
print("\n"+"执行结束".center(scale//2,'-'))
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注