python 中的 Fraction和GCD求最大公约数
1 基础
Fraction类在Lib/fractions.py文件中,所以可以这样导入:
1
|
from fractions import Fraction
|
有很多种实例化Fraction类的方法。
首先,你可以传入分子和分母:
1
2
|
>>> Fraction( 1 , 2 )
Fraction( 1 , 2 )
|
或者利用另一个分数进行实例化:
1
2
3
|
>>> f = Fraction( 1 , 2 )
>>> Fraction(f)
Fraction( 1 , 2 )
|
使用一个浮点数进行实例化:
1
2
|
>>> Fraction( 2.5 )
Fraction( 5 , 2 )
|
或者使用一个 decimal:
1
2
3
|
>>> from decimal import Decimal
>>> Fraction(Decimal( '1.1' ))
Fraction( 11 , 10 )
|
最后一种方法,可能是最有趣的一种方法,你可以使用一个字符串实例化Fraction类:
1
2
|
>>> Fraction( '9/16' )
Fraction( 9 , 16 )
|
本质上讲,Fraction类这么设计,目的就是为了让你在实例化该类之前不需要做很多处理。Fraction类知道如何处理多种不同的数据类型。
2 自动约分
约分并不是很难,但是对于一些复杂的分数,约分还是要费点事的。Fraction类在这方面特别有用,因为它能自动约分分数。
1
2
|
>>> Fraction( 153 , 272 )
Fraction( 9 , 16 )
|
纯粹靠想,你可能无法约分153/172,但是Fraction类能很快地完成约分。
3 二元运算
你可以像对待整数和浮点数一样,在Fraction对象上执行二元运算。
两个分数进行相加操作:
1
2
|
>>> Fraction( 1 , 2 ) + Fraction( 3 , 4 )
Fraction( 5 , 4 )
|
这样操作就很方便了,但是你也可以混合整数或浮点数。如你所料,Fraction对象和一个整数进行相加返回一个Fraction对象,但和一个浮点数进行相加返回一个浮点数。
1
2
3
4
|
>>> Fraction( 5 , 16 ) + 3
Fraction( 53 , 16 )
>>> Fraction( 5 , 16 ) + 3.0
3.3125
|
这里有一些其他的二元运算的例子:
1
2
3
4
5
6
|
>>> 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 )
|
现在让我们试试乘方操作:
1
2
|
>>> Fraction( 1 , 8 ) * * Fraction( 1 , 2 )
0.3535533905932738
|
它返回一个浮点数,可能是因为分数不能进行合理的计算。实际上我们可以使用limit_denominator方法得到一个近似的Fraction值。
1
2
3
|
>>> f = Fraction( 1 , 8 ) * * Fraction( 1 , 2 )
>>> Fraction(f).limit_denominator()
Fraction( 235416 , 665857 )
|
记住,你可以混合字符串和其他上边实例化部分中提到的数据类型。
1
2
3
4
|
>>> Fraction( "1/2" ) + Fraction( 2.0 )
Fraction( 5 , 2 )
>>> Fraction( 2 ) * Fraction( " 1/2 " )
Fraction( 1 , 1 )
|
4 获取Fraction对象的属性
你已经有了一个Fraction对象,并且已经做了一些计算,现在我们如何访问它的属性呢?
不阅读文档的话,你或许会尝试Fraction.numerator和Fraction.denominator,事实证明你是正确的。
1
2
3
4
5
|
>>> f = Fraction( 221 , 234 ) + Fraction( 1 , 2 )
>>> f.numerator
13
>>> f.denominator
9
|
或者作为一个字符串,打印整个分数:
1
2
3
4
5
|
>>> print f
13 / 9
>>> a = str (f)
>>> a
'13/9'
|
5 GCD
这不是Fraction类的一部分,它是在fractions库中的。利用它你可以快速找到两个数的最大公约数。
首先导入:
1
|
from fractions import gcd
|
一些例子:
1
2
3
4
|
>>> gcd( 100 , 75 )
25
>>> gcd( 221 , 234 )
13
|
6 总结
希望你已经学到了一些关于在Python中处理分数的东西。如果你想内容,可以查看文档。如果你感觉学起来非常有动力,可以看看源代码。
python 中的 Fraction和GCD求最大公约数相关推荐
- python中对两个 list 求交集,并集和差集
python中对两个 list 求交集,并集和差集: 1.首先是较为浅白的做法: >>> a=[1,2,3,4,5,6,7,8,9,10] >>> b=[1,2,3 ...
- 原python实现素数判断_Python实现求最大公约数及判断素数的方法
本文实例讲述了python实现求最大公约数及判断素数的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python def showMaxFactor(num): cou ...
- Python中除法取整以及求余数(模)的方式
除法取整 第一种方法 第二种方法 求余数 第一种方法 强制类型转换,即将结果转换成int类型: int(5/2) 第二种方法 整除运算"//": (5//2) 结果都是2. 求余数 ...
- python中素数的求法_python求素数的方法
题目:判断101-200之间有多少个素数,并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 我的代码: for i i ...
- python中如何编写代码输入多个数据并把它们放在一个列表中去_10分钟学习函数式Python...
在这篇10分钟的文章中,您将学习Python中的函数式范型.您还将学习列表推导式. 目录 函数式范式 Python的map函数是如何运行的 Python中的lambda表达式 Python中的redu ...
- Python中的数据序列(元组、集合、字典)
Python中的数据序列 一.元组的定义与使用 1.为什么需要元组 思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做? 答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改. ...
- python一行输出多个数据_如何在Python中让两个print()函数的输出打印在一行内?
1.两个连续的print()函数为什么在输出时内容会分行显示? 解:print()中有两个默认参数sep和end,其中sep是代替分隔符,end是代替末尾的换行符,默认使用','代替空格,且默认末尾加 ...
- Python中*与**的几种用法
Python中的*与**操作符使用最多的就是两种用法.一种是用作运算符,即*表示乘号,**表示次方.第二种是用于指定函数传入参数的类型的,*用于参数前面,表示传入的(多个)参数将按照元组的形式存储:* ...
- 【博学谷学习记录】超强总结,用心分享|人工智能第五课Python中变量的应用场景及常用方法II
一.字典--Python中的查询神器 1.字典(dict)的概念 特点: ① 符号为==大括号==(花括号) => {} ② 数据为==键值对==形式出现 => {key:value},k ...
- Python中的数据序列
一.了解字符串 1.字符串的定义 字符串是 Python 中最常用的数据类型.我们一般使用引号来创建字符串.创建字符串很简单,只要为变量分配一个值即可. 案例1:使用单引号或双引号定义字符串变量 st ...
最新文章
- 为什么 Redis 的吞吐量能这么高
- ajax请求,请求头是provisional are shown。请求未发送出去
- 开源!mathAI 手写拍照自动能解高数题,还不快试试?
- ABAP Netweaver和git的快捷方式
- 百度地图LBS云存储自定义poi热点
- 突然情怀就上来啦,‘闭包’ 今天咱们讲一下子
- HTML5 DOM File API 转)
- 最小对/优先队列(C语言实现)
- linux下类似Bus Hound的工具
- canvas时钟绘制方法总结
- 解决npm 下载速度慢的问题
- C# string转Intptr Intptr转string
- 【AI初识境】从3次人工智能潮起潮落说起
- 树育发统系物生微归递递归微生物系统发育树
- x4提示你的产品已经被禁用_win10系统注册表已被管理员禁用的解决方法
- python猫狗大战游戏下载_猫狗大战RPG游戏下载
- java毕业生设计房屋租售网站计算机源码+系统+mysql+调试部署+lw
- Dubbo03【管理控制台和监控中心搭建】
- C语言用函数指针实现数组排序
- python jwt pyjwt 使用案例