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求最大公约数相关推荐

  1. python中对两个 list 求交集,并集和差集

    python中对两个 list 求交集,并集和差集: 1.首先是较为浅白的做法: >>> a=[1,2,3,4,5,6,7,8,9,10] >>> b=[1,2,3 ...

  2. 原python实现素数判断_Python实现求最大公约数及判断素数的方法

    本文实例讲述了python实现求最大公约数及判断素数的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python def showMaxFactor(num): cou ...

  3. Python中除法取整以及求余数(模)的方式

    除法取整 第一种方法 第二种方法 求余数 第一种方法 强制类型转换,即将结果转换成int类型: int(5/2) 第二种方法 整除运算"//": (5//2) 结果都是2. 求余数 ...

  4. python中素数的求法_python求素数的方法

    题目:判断101-200之间有多少个素数,并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 我的代码: for i i ...

  5. python中如何编写代码输入多个数据并把它们放在一个列表中去_10分钟学习函数式Python...

    在这篇10分钟的文章中,您将学习Python中的函数式范型.您还将学习列表推导式. 目录 函数式范式 Python的map函数是如何运行的 Python中的lambda表达式 Python中的redu ...

  6. Python中的数据序列(元组、集合、字典)

    Python中的数据序列 一.元组的定义与使用 1.为什么需要元组 思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做? 答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改. ...

  7. python一行输出多个数据_如何在Python中让两个print()函数的输出打印在一行内?

    1.两个连续的print()函数为什么在输出时内容会分行显示? 解:print()中有两个默认参数sep和end,其中sep是代替分隔符,end是代替末尾的换行符,默认使用','代替空格,且默认末尾加 ...

  8. Python中*与**的几种用法

    Python中的*与**操作符使用最多的就是两种用法.一种是用作运算符,即*表示乘号,**表示次方.第二种是用于指定函数传入参数的类型的,*用于参数前面,表示传入的(多个)参数将按照元组的形式存储:* ...

  9. 【博学谷学习记录】超强总结,用心分享|人工智能第五课Python中变量的应用场景及常用方法II

    一.字典--Python中的查询神器 1.字典(dict)的概念 特点: ① 符号为==大括号==(花括号) => {} ② 数据为==键值对==形式出现 => {key:value},k ...

  10. Python中的数据序列

    一.了解字符串 1.字符串的定义 字符串是 Python 中最常用的数据类型.我们一般使用引号来创建字符串.创建字符串很简单,只要为变量分配一个值即可. 案例1:使用单引号或双引号定义字符串变量 st ...

最新文章

  1. 为什么 Redis 的吞吐量能这么高
  2. ajax请求,请求头是provisional are shown。请求未发送出去
  3. 开源!mathAI 手写拍照自动能解高数题,还不快试试?
  4. ABAP Netweaver和git的快捷方式
  5. 百度地图LBS云存储自定义poi热点
  6. 突然情怀就上来啦,‘闭包’ 今天咱们讲一下子
  7. HTML5 DOM File API 转)
  8. 最小对/优先队列(C语言实现)
  9. linux下类似Bus Hound的工具
  10. canvas时钟绘制方法总结
  11. 解决npm 下载速度慢的问题
  12. C# string转Intptr Intptr转string
  13. 【AI初识境】从3次人工智能潮起潮落说起
  14. 树育发统系物生微归递递归微生物系统发育树
  15. x4提示你的产品已经被禁用_win10系统注册表已被管理员禁用的解决方法
  16. python猫狗大战游戏下载_猫狗大战RPG游戏下载
  17. java毕业生设计房屋租售网站计算机源码+系统+mysql+调试部署+lw
  18. Dubbo03【管理控制台和监控中心搭建】
  19. C语言用函数指针实现数组排序
  20. python jwt pyjwt 使用案例

热门文章

  1. (转载)洪磊并不是反叛英雄
  2. 7-1 循环-Fibonacci数列的运算 (50 分)
  3. Word 首页如何不插入页码? 页码从正文开始,如何分节
  4. 编程狂人|后台服务架构高性能设计之道
  5. 互联网广告的形式表现有哪几种?
  6. MPEG音频文件格式(包括MP3文件格式)详解
  7. pycharm官方下载库很慢、会失败的解决方法
  8. getMonthsetMonth方法
  9. Android 点击键盘外 非输入框 关闭软键盘
  10. j2ee与j2se对比