鱼C论坛

 找回密码
 立即注册
查看: 2748|回复: 4

[技术交流] Python 小技巧 048:分数计算

[复制链接]
发表于 2020-1-13 22:30:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zltzlt 于 2020-1-13 22:30 编辑

Python 分数计算


Python 的第三方库 fractions 实现了有理数(即分数)的基本运算。

要想使用 fractions 模块,首先当然得导入:
>>> from fractions import Fraction

之后创建一个 Fractions(分数类)的实例。初始化方法中的参数可以是一个 '[sign]numerator[/denominator]' 格式的字符串。

sign 表示分数的正负,可以是 + 或 -,如果是 + 可以省略。denominator 表示分数的分母。

例如:
>>> Fraction('-1')
Fraction(-1, 1)
>>> Fraction('1/5')
Fraction(1, 5)

参数也可以是一个浮点数,Fraction 内部自动将其转化为分数。

例如:
>>> Fraction(0.2)
Fraction(3602879701896397, 18014398509481984)
>>> 3602879701896397 / 18014398509481984
0.2

还可以是两个整数,分别代表分子和分母。

例如:
>>> Fraction(1, 3)    # 代表 1/3
Fraction(1, 3)

之后,我们便可以尝试将两个分数相加了。
>>> f1 = Fraction(1, 3)
>>> f2 = Fraction(2, 3)
>>> f1 + f2    # 将两个 Fraction 的实例相加
Fraction(1, 1)

OK,可以看到结果是正确的。除了相加,还可以将两个分数相减、相乘与相除:
>>> f1 = Fraction(5, 7)
>>> f2 = Fraction(3, 6)
>>> f1 - f2
Fraction(3, 14)
>>> f1 = Fraction(2, 3)
>>> f2 = Fraction(10, 13)
>>> f1 * f2
Fraction(20, 39)
>>> f1 = Fraction(3, 4)
>>> f2 = Fraction(1, 3)
>>> f1 / f2
Fraction(9, 4)
>>> f1 // f2    # 地板除
2
>>> f1 % f2    # 求余数
Fraction(1, 12)

很神奇,对不对

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-14 06:54:14 From FishC Mobile | 显示全部楼层
不!这不神奇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-30 13:45:01 | 显示全部楼层
都是分数的基本运算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-30 14:15:11 | 显示全部楼层
本帖最后由 _2_ 于 2020-1-30 14:16 编辑
>>> from fractions import Fraction
>>> a = Fraction(8,7)
>>> b = Fraction(5,6)
>>> c = Fraction(a,b)  #这里尝试创建繁分数
>>> c                    #看看能不能成功
Fraction(48, 35)
>>> 

官方的模块就是牛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-30 14:20:33 | 显示全部楼层
_2_ 发表于 2020-1-30 14:15
官方的模块就是牛


对啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 14:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表