Python下定义一个函数来显示相应的进度条

来源:互联网 发布:微信秒杀软件哪个好 编辑:程序博客网 时间:2024/05/22 09:50

最近博主在写一个梦想完成度.py,用来检测电脑里写了多少脚本       但是发现如果没有一个进度条的话,看起来有点不方便,不够直观

所以博主设想:可不可以def一个函数,比如processbar(number),这里输入进的number是一个小数,而函数自动将小数转化成进度条呢?


============================================如果仅需要代码,请跳到文章最后

经过一番思考,我觉得可以打印一个进度条,例如:

#┌──────────┬────┐
#│██████████ │ 100%│ Sample
#└──────────┴────┘

 像这样

外边的框架是固定的,但是里边的''符号一共就十个,

例如,当processbar(number)读取的number是0.12  =>   number乘以10变成1.2,再用地板除   =>   1.2 // 1 = 1

这样用一次for循环就打印出1个''图形,由于''图形总共就是10个,所以这样大约的代表0.12的进度条

像这样:

#┌──────────┬────┐
#│█                        │   12%│ Sample
#└──────────┴────┘

百分比那里可以用字符串格式化来右对齐,保证进度条的美观


发现问题:

经过测试我们发现,一个''图形占用的是两个空格的位置,这样一来随着''图形数量的改变,进度条的框架也会后退

例如:

#┌──────────┬────┐
#│█          |   0.11%│
#└──────────┴────┘

#┌──────────┬────┐
#│███       |   0.33%│
#└──────────┴────┘

#┌──────────┬────┐
#│████████   |   0.82%│
#└──────────┴────┘

观察到了吗?百分比前面的那个'|'符号会浮动

因此,通过反复观察与测试,我得到了以下结果:

#┌──────────┬────┐
#│█                        |  0.11%│  19 spaces
#└──────────┴────┘
#┌──────────┬────┐
#│██                      | 0.22%│   17  spaces
#└──────────┴────┘
#┌──────────┬────┐
#│███                   | 0.33%│   15  spaces
#└──────────┴────┘

 

也就是说

#┌──────────┬────┐
#│<=这一段距离=>| 0.15%│  
#└──────────┴────┘

一个黑块占两个空格宽,那么上图中这一段距离一共是21个字符间隔 

所以这样就得到了数学关系式了,即可设计代码了:

 

def processbar(num):#显示出进度条的函数#┌──────────┬────┐#│██████████│ 100.00%│ Sample#└──────────┴────┘    temp = (eval(num) * 10) // 1    spaces = (21 - int(temp)*2) * ' '    temp = str(int(temp) * '█')+spaces    bar = '''┌──────────┬────┐│{:10s}|{:7.2f}%│└──────────┴────┘'''.format(temp,float(num))    print(bar)

代码编译完毕   这样一来只需要输入一个浮点数,然后processbar就会生成一个格式整齐的进度条的字符串啦

在下python小鲜肉一枚   若有不妥,还请多多指教

阅读全文
0 0