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个字符间隔
所以这样就得到了数学关系式了,即可设计代码了:
代码编译完毕 这样一来只需要输入一个浮点数,然后processbar就会生成一个格式整齐的进度条的字符串啦
在下python小鲜肉一枚 若有不妥,还请多多指教
所以博主设想:可不可以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小鲜肉一枚 若有不妥,还请多多指教
相关文章推荐
- 下载远程文件, 加入一个进度显示 分类: python 2013-06-09 12:09 314人阅读 评论(0) 收藏
- 如何用python的装饰器定义一个像C++一样的强类型函数
- Python urllib的urlretrieve()函数解析 (显示下载进度)
- 定义一个一维数组,写以下6个函数来完成相应功能,在主函数中调用这6个函数。(要求,函数形参都为指针变量)
- Python3基础 函数名.__doc__显示一个函数的单行与多行函数文档
- Python基础语法学习--函数+案例--定义一个函数,实现两个数的四则运算
- Python实现一元二次方程的定义是:ax2 + bx + c = 0 请编写一个函数,返回一元二次方程的解。
- Python 里为什么函数可以返回一个函数内部定义的函数
- Python实现一元二次方程的定义是:ax2 + bx + c = 0 请编写一个函数,返回一元二次方程的解。
- 定义一个一维数组,写5个函数来完成相应功能,在主函数中调用这5个函数。(要求,函数形参都为指针变量)
- Python: 为对象动态添加函数,且函数定义来自一个str
- 用Python定义一个求绝对值的函数
- 号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函
- Python中函数的定义和实现
- python 定义函数
- python3 创建密码函数,并显示为*号
- js中定义一个全局的boolean变量,jquery中对button进行隐藏和显示
- 定义一个函数,来实现重复代码的简写.
- C/C++语言之通过定义指针函数方式来实现在一个cpp文件里面获取另外一个cpp文件函数的返回值
- 为函数原型编写函数定义:int my_atoi(char *str);(将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数))