Python中分数的相关使用教程


Posted in Python onMarch 30, 2015

你可能不需要经常处理分数,但当你需要时,Python的Fraction类会给你很大的帮助。在该指南中,我将提供一些有趣的实例,用于展示如何处理分数,突出显示一些很酷的功能。
1 基础

Fraction类在Lib/fractions.py文件中,所以可以这样导入:
 

from fractions import Fraction

有很多种实例化Fraction类的方法。

首先,你可以传入分子和分母:
 

>>> Fraction(1, 2)
Fraction(1, 2)

或者利用另一个分数进行实例化:
 

>>> f = Fraction(1, 2)
>>> Fraction(f)
Fraction(1, 2)

使用一个浮点数进行实例化:
 

>>> Fraction(2.5)
Fraction(5, 2)

或者使用一个 decimal:
 

>>> from decimal import Decimal
>>> Fraction(Decimal('1.1'))
Fraction(11, 10)

最后一种方法,可能是最有趣的一种方法,你可以使用一个字符串实例化Fraction类:
 

>>> Fraction('9/16')
Fraction(9, 16)

本质上讲,Fraction类这么设计,目的就是为了让你在实例化该类之前不需要做很多处理。Fraction类知道如何处理多种不同的数据类型。
2 自动约分

约分并不是很难,但是对于一些复杂的分数,约分还是要费点事的。Fraction类在这方面特别有用,因为它能自动约分分数。
 

>>> Fraction(153, 272)
Fraction(9, 16)

纯粹靠想,你可能无法约分153/172,但是Fraction类能很快地完成约分。
3 二元运算

你可以像对待整数和浮点数一样,在Fraction对象上执行二元运算。

两个分数进行相加操作:
 

>>> Fraction(1, 2) + Fraction(3, 4)
Fraction(5, 4)

这样操作就很方便了,但是你也可以混合整数或浮点数。如你所料,Fraction对象和一个整数进行相加返回一个Fraction对象,但和一个浮点数进行相加返回一个浮点数。
 

>>> Fraction(5, 16) + 3
Fraction(53, 16)
>>> Fraction(5, 16) + 3.0
3.3125

这里有一些其他的二元运算的例子:
 

>>> Fraction(5, 16) - Fraction(1, 4)
Fraction(1, 16)
>>> Fraction(1, 16) * Fraction(3, 16)
Fraction(3, 256)
>>> Fraction(3, 16) / Fraction(1, 8)
Fraction(3, 2)

现在让我们试试乘方操作:
 

>>> Fraction(1, 8) ** Fraction(1, 2)
0.3535533905932738

它返回一个浮点数,可能是因为分数不能进行合理的计算。实际上我们可以使用limit_denominator方法得到一个近似的Fraction值。
 

>>> f = Fraction(1, 8) ** Fraction(1, 2)
>>> Fraction(f).limit_denominator()
Fraction(235416, 665857)

记住,你可以混合字符串和其他上边实例化部分中提到的数据类型。
 

>>> Fraction("1/2") + Fraction(2.0)
Fraction(5, 2)
>>> Fraction(2) * Fraction("  1/2  ")
Fraction(1, 1)

4 获取Fraction对象的属性

你已经有了一个Fraction对象,并且已经做了一些计算,现在我们如何访问它的属性呢?

不阅读文档的话,你或许会尝试Fraction.numerator和Fraction.denominator,事实证明你是正确的。
 

>>> f = Fraction(221, 234) + Fraction(1, 2)
>>> f.numerator
13
>>> f.denominator
9

或者作为一个字符串,打印整个分数:
 

>>> print f
13/9
>>> a = str(f)
>>> a
'13/9'
5 GCD

这不是Fraction类的一部分,它是在fractions库中的。利用它你可以快速找到两个数的最大公约数。

首先导入:
 

from fractions import gcd

一些例子:
 

>>> gcd(100, 75)
25
>>> gcd(221, 234)
13

6 总结

希望你已经学到了一些关于在Python中处理分数的东西。如果你想阅读更多内容,可以查看文档。如果你感觉学起来非常有动力,可以看看源代码。

如果你有更有趣的分数使用方法,告诉我,我会将它们添加到指南中。

Python 相关文章推荐
python之wxPython菜单使用详解
Sep 28 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
python网络爬虫学习笔记(1)
Apr 09 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
python 获取字符串MD5值方法
May 29 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
python实现彩色图转换成灰度图
Jan 15 Python
Python实现的爬取小说爬虫功能示例
Mar 30 Python
Django ImageFiled上传照片并显示的方法
Jul 28 Python
Python 图像对比度增强的几种方法(小结)
Sep 25 Python
Pytest allure 命令行参数的使用
Apr 18 Python
Python2.x中str与unicode相关问题的解决方法
Mar 30 #Python
分享一个常用的Python模拟登陆类
Mar 29 #Python
python实现查询IP地址所在地
Mar 29 #Python
python实现定时播放mp3
Mar 29 #Python
Python实现设置windows桌面壁纸代码分享
Mar 28 #Python
Python中的类与对象之描述符详解
Mar 27 #Python
深入理解Javascript中的this关键字
Mar 27 #Python
You might like
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
Python使用pymysql小技巧
2017/06/04 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
Python中作用域的深入讲解
2018/12/10 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
django框架cookie和session用法实例详解
2019/12/10 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
办公用品质量保证书
2015/05/11 职场文书
教务处教学工作总结
2015/08/10 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书