您的位置:首页 > 编程语言 > Python开发

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

2017-08-29 13:48 417 查看
最近博主在写一个梦想完成度.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小鲜肉一枚   若有不妥,还请多多指教
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐