python中可以做的数学运算,仅局限在了基本数据类型int、float。因为我们前面学过了特殊方法,所以我们现在也可以进行有理数运算、矩阵运算,今天我们就先讲解有理数运算,矩阵运算与有理数运算方法基本一样,都要用到特殊方法进行定义运算过程。

有理数分为整数和分数,整数即int,不需要讲解,今天我们就说下分数的数学运算。分数的数学运算要注意最后运算结果化为最简形,化为最简形就需要事先计算出分子分母的最大公约数。表示有理数类我们用Rational进行表示。具体的事先过程我们以一例子进行讲解。

在Rational类中实现有理数的四则运算。

def gcd(a, b):   #求a/b中分子分母的最大公约数if(b == 0):return areturn gcd(b, a%b)
class Rational(object):def __init__(self, p, q):self.p = pself.q = qdef __add__(self, r):  #分数相加return Rational(self.p * r.q + r.p * self.q, self.q * r.q)def __sub__(self, r):   #分数相减return Rational(self.p * r.q - self.q * r.p, self.q * r.q)def __mul__(self, r):   #分数相乘return Rational(self.p * r.p, self.q * r.q)def __div__(self, r):   #分数相除return Rational(self.p * r.q, self.q * r.p)def __str__(self):c = gcd(self.p, self.q)return '%s/%s' % (self.p/c, self.q/c)__repr__ = __str__r1 = Rational(1, 2)
r2 = Rational(1, 3)
print r1+r2, r1-r2, r1*r2, r1/r2

在我看来,有理数中的分数加减乘除的方法是简单的,在类中加减乘除的方法中,只需要将两个分数四则运算后的公式中的分子分母写成一个类实例对象返回即可。不过我认为难点是,要编写一个求两数最大公约数的方法,在__str__方法中调用该方法即可。在类外直接print r1+r2即可,因为特殊方法__xx__会自动调用。

欢迎大家和我一起交流学习,我的公众号是:

python之有理数运算Rational类相关推荐

  1. python精确有理数实验_python之有理数运算Rational类

    python中可以做的数学运算,仅局限在了基本数据类型int.float.因为我们前面学过了特殊方法,所以我们现在也可以进行有理数运算.矩阵运算,今天我们就先讲解有理数运算,矩阵运算与有理数运算方法基 ...

  2. 设计一个分数类java_Java 有理数类 分数类 Rational类的设计与实现

    要实现Rational类的加减乘除,要实现其可比较性,要覆盖toString()方法,要实现不同数据类型的转换等. package chapter14; public class Rational e ...

  3. 【廖雪峰python进阶笔记】定制类

    1. __str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object):def __init__(self, nam ...

  4. 面向对象程序设计实验——编写Rational类

    面向对象程序设计实验--编写Rational类 实验任务与要求 代码解析 定义一个命名空间Numeric Rational类的成员变量 编写默认构造函数 编写复制构造函数 编写赋值操作= 分数化简 编 ...

  5. python中类的嵌套_python类的嵌套

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 在.net和java语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的 ...

  6. 【Python面试】 列举Python中的标准异常类?

    往期面试题: 说说Python变量.函数.类的命名规则? 说说Python可变与不可变数据类型? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 说说Python模块主要分哪三 ...

  7. python中exception类的_面试题 | 列举几个Python中的标准异常类?

    [摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...

  8. python 数字运算及格式化_Python基础教程(3)Python数据类型、运算与格式化

    一.Python的数据类型 主要分为了数字型和非数字型两个大类,其中数字型又包含整形(int).浮点型(float).布尔型(bool),而非数字分为字符串(str).列表(list).元组(tupl ...

  9. 十年测试经验的阿里p10讲解python初阶:函数和模块 python全栈自动化测试系类4-2

    还是老规矩,大家可能对凡哥不是很了解这里先和大家来个自我介绍 凡哥我已经有着十二年互联网自动化测试和测试开发工程师,拥有丰富的自动化测试平台及测试开发经验,擅长接口测试.Python自动化全栈,测试开 ...

最新文章

  1. 基础算法整理(1)——递归与递推
  2. Python学习--Mac安装Python3
  3. LeetCode 856. 括号的分数
  4. python 组合数_python – 查找两个数组元素的最大有效组合数
  5. 利用T-SQL动态定义重复SQL Server数据库表行
  6. Log4j 日志输出学习(Eclipse)
  7. linux系统监控、诊断工具摘录top IO wait lsof
  8. docker启动mysql容器报错driver failed programming external connectivity on endpoint mysq
  9. adf4351_配置MySQL以进行ADF开发
  10. 本地Blast2GO安装
  11. cad断点快捷键_史上最好的CAD常用快捷键及使用方法集
  12. Python自定义一个异常类【注释详细】
  13. 上古卷轴5mo初始化python失败_《上古卷轴5》MO管理器设置方法初级教程 MO管理器怎么设置...
  14. ffmpeg每隔1秒抽取视频的1帧画面
  15. 2022年河南工业大学专升本2022年河南工业大学专升本(解答)
  16. 十大算法之弗洛伊德算法
  17. 天翼云盘在MAC系统里卸载不了,怎么解决呢
  18. 利用matlab求点到直线距离和垂足坐标(开源,易使用修改)
  19. Fiddler_Https_浏览器与手机端_抓包_手顺书
  20. Kahn拓扑排序模板

热门文章

  1. 华为云计算IE面试笔记-桌面云用户登录连接流程及故障处理
  2. 秉火429笔记之十三 通信基本概念
  3. 对话系统 | (1) 任务导向型对话系统 -- 对话管理模型研究最新进展
  4. mac怎么查node版本_Mac更新node版本和npm版本
  5. CNCC2019第三天 | 传统产业如何进行智能化升级?你踩雷了吗?
  6. App推广如何快速实现,这些方法能帮你
  7. 用 TableModel Free 框架简化 Swing 开发——JTable
  8. 准备1500 RMB Go云南!!
  9. bp神经网络权值调整公式,bp神经网络算法推导
  10. 盛世昊通董车长2.0“后“积薄发,点爆汽车后市场