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 相关文章推荐
django 修改server端口号的方法
May 14 Python
Django1.9 加载通过ImageField上传的图片方法
May 25 Python
使用Django启动命令行及执行脚本的方法
May 29 Python
NLTK 3.2.4 环境搭建教程
Sep 19 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
浅析python参数的知识点
Dec 10 Python
pandas的qcut()方法详解
Jul 06 Python
python异常触发及自定义异常类解析
Aug 06 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
Python递归函数特点及原理解析
Mar 04 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
python查询MySQL将数据写入Excel
Oct 29 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
IIS下PHP的三种配置方式对比
2014/11/20 PHP
php中mysql操作buffer用法详解
2015/03/19 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
python实现百度关键词排名查询
2014/03/30 Python
Python入门篇之列表和元组
2014/10/17 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
EM算法的python实现的方法步骤
2018/01/02 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
Python GUI编程完整示例
2019/04/04 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
python中append函数用法讲解
2020/12/11 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
初婚初育证明
2014/01/14 职场文书
大学生职业生涯规划书模板
2014/01/18 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
施工单位安全责任书
2014/07/24 职场文书
英文感谢信范文
2015/01/21 职场文书
法人代表证明书范本
2015/06/18 职场文书