《数据结构与算法Python语言描述》习题第二章第三题(python版)

ADT Rational: #定义有理数的抽象数据类型    Rational(self, int num, int den)    #构造有理数num/den    +(self, Rational r2)                #求出本对象加r2的结果    -(self, Rational r2)                #求出本对象减r2的结果    *(self, Rational r2)                #求出本对象乘以r2的结果    /(self, Rational r2)                #求出本对象除以r2的结果    num(self)                           #取出本对象的分子    den(self)                           #取出本对象的分母    int(self)                           #取整    float(self)                         #取浮点数    ==(self,Rational r2)    !=(self,Rational r2)    >(self,Rational r2)    <(self,Rational r2)    >=(self,Rational r2)    >=(self,Rational r2)
  1 #!/usr/bib/env python
  2 # -*- coding:utf-8 -*-
  3
  4 """
  5 ADT Rational:                           #定义有理数的抽象数据类型
  6     Rational(self, int num, int den)    #构造有理数num/den
  7     +(self, Rational r2)                #求出本对象加r2的结果
  8     -(self, Rational r2)                #求出本对象减r2的结果
  9     *(self, Rational r2)                #求出本对象乘以r2的结果
 10     /(self, Rational r2)                #求出本对象除以r2的结果
 11     num(self)                           #取出本对象的分子
 12     den(self)                           #取出本对象的分母
 13     int(self)                           #取整
 14     float(self)                         #取浮点数
 15     ==(self,Rational r2)
 16     !=(self,Rational r2)
 17     >(self,Rational r2)
 18     <(self,Rational r2)
 19     >=(self,Rational r2)
 20     >=(self,Rational r2)
 21 """
 22
 23 class Rational(object):
 24     __slots__ = (‘_num‘, ‘_den‘)
 25
 26     @staticmethod
 27     def _gcd(m,n):
 28         while 1:
 29             temp = n % m
 30             if temp == 0:
 31                 return m
 32             else:
 33                 n = m
 34                 m = temp
 35
 36     def __init__(self, num, den=1):
 37         if not isinstance(num, int) or not isinstance(num, int):
 38             raise   TypeError
 39         if den == 0:
 40             raise ZeroDivisionError
 41         sign = 1
 42         if num < 0:
 43             num, sign = -num, -sign
 44         if den < 0:
 45             den, sign = -den, -sign
 46         g = Rational._gcd(num, den)
 47         self._num = sign*(num//g)
 48         self._den = den//g
 49
 50         #float
 51         x = self._num / self._den
 52         self._num = x.as_integer_ratio()[0]
 53         self._den = x.as_integer_ratio()[1]
 54
 55     def __add__(self, other):
 56         den = self._den * other._den
 57         num = self._den * other._num + self._num * other._den
 58         return Rational(num, den)
 59
 60     def __sub__(self, other):
 61         den = self._den * other._den
 62         num = self._num * other._den - self._den * other._num
 63         return Rational(num, den)
 64
 65     def __mul__(self, other):
 66         den = self._den * other._den
 67         num = self._num * other._num
 68         return Rational(num, den)
 69
 70     def __floordiv__(self, other):
 71         den = self._den * other._num
 72         num = self._num * other._den
 73         return Rational(num, den)
 74
 75     def __int__(self):
 76         return self._num // self._den
 77
 78     def __float__(self):
 79         return self._num / self._den
 80
 81     def __eq__(self, other):
 82         return self._num * other._den == self._den * other._num
 83
 84     def __ne__(self, other):
 85         return self._num * other._den != self._den * other._num
 86
 87     def __lt__(self, other):
 88         return self._num * other._den < self._den * other._num
 89
 90     def __le__(self, other):
 91         return self._num * other._den <= self._den * other._num
 92
 93     def __gt__(self, other):
 94         return self._num * other._den > self._den * other._num
 95
 96     def __ge__(self, other):
 97         return self._num * other._den >= self._den * other._num
 98
 99
100     def __str__(self):
101         return str(self._num) + "/" + str(self._den)
102
103     def print(self):
104         print(self._num, "/", self._den)
105
106     def num(self):
107         return self._num
108     def den(self):
109         return self._den
110
111 if __name__ == ‘__main__‘:
112     a = Rational(10,5)
113     b = Rational(1,1000000)
114     print(a)
115     print(b)
116     print("==")
117     print(a+b)
118     print(a!=b)
119     print(int(a))
120     print(int(b))

 
时间: 2024-10-14 06:48:36

《数据结构与算法Python语言描述》习题第二章第三题(python版)的相关文章

运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取 一.实验环境: Python2.7.10.pycharm.VM虚拟机.CentOS6.3.mysql 二.MySQLdb模块: MySQLdb模式是Python中专门连接MySQL数据库的模块,另外Python开发环境的搭

数据结构与算法分析(C语言描述)第二章 算法分析【总结】

重点:大O记法,最大子序列和(4种算法),对数级算法(3个例子:对分查找.欧几里德算法.幂运算) 算法 算法(algorithm)是为求解一个问题需要遵循的.被清楚地指定的简单指令的集合. 数学基础 四个定义: 1.大O表示法:如果存在正常数 c 和 n0 使得当 N ≥ n0时,T(N) ≤ cf(N),则记为T(N) = O(f(N)). (描述了T(N)的相对增长率小于等于f(N)的相对增长率.) 2.大Ω表示法:如果存在正常数 c 和 n0 使得当 N ≥ n0时,T(N) ≥ cf(N

python核心编程-习题-第二章

PS:PDF在线地址:http://bcmi.sjtu.edu.cn/~zhaohai/ptm2012/data/Python-kernel.programming.v2.pdf 2-1  变量,print 和字符串格式化运算符.启动交互式解释器,给一些变量赋值(字符串,数值等等)并通过输入变量名显示它们的值.再用 print 语句做同样的事.这二者有何区别? 也尝试着使用字符串格式运算符%,多做几次,慢慢熟悉. # -*- coding:utf-8 -*- >>>a = 123 >

第二章-第三题(四则元算需求文档编写、上传至GitHub与修改)-By郭青云

题目描述: 完成小组的“四则运算”项目的需求文档(使用Markdown写文档),尝试同组成员在各自PC上修改同一文档后,如何使用Git命令完成GitHub上的文档的更新,而不产生冲突.并验证GitHub上的文档确实是最新的文档. 步骤: a)编写文档 b)从代码库中pull项目至本地分支 c)修改需求文档 d)提交修改 d)合并修改的内容

第二章第三题

3.写代码,有如下列表,按照要求实现每一个功能 li=['alex', 'eric', 'rain'] 计算列表长度并输出 列表中追加元素"seven",并输出添加后的列表 请在列表的第1个位置插入元素"Tony",并输出添加后的列表 请修改列表第2个位置的元素为"Kelly",并输出修改后的列表 请删除列表中的元素"eric",并输出修改后的列表 请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表 请删除列表中

数据结构与算法+Python语言描述pdf

下载地址:网盘下载 本书基于Python语言介绍了数据结构与算法的基本知识,主要内容包括抽象数据类型和Python面向对象程序设计.线性表.字符串.栈和队列.二叉树和树.集合.排序以及算法的基本知识.本书延续问题求解的思路,从解决问题的目标来组织教学内容,注重理论与实践的并用. 下载地址:网盘下载 原文地址:https://www.cnblogs.com/cf3276625841/p/9325994.html

《数据结构与算法分析—C语言描述》pdf

下载地址:网盘下载 内容简介 编辑 <数据结构与算法分析:C语言描述(原书第2版)>内容简介:书中详细介绍了当前流行的论题和新的变化,讨论了算法设计技巧,并在研究算法的性能.效率以及对运行时间分析的基础上考查了一些高级数据结构,从历史的角度和近年的进展对数据结构的活跃领域进行了简要的概括.由于<数据结构与算法分析:C语言描述(原书第2版)>选材新颖,方法实用,题例丰富,取舍得当.<数据结构与算法分析:C语言描述(原书第2版)>的目的是培养学生良好的程序设计技巧和熟练的算

数据结构与算法分析 c语言描述 pdf 高清下载

网盘下载:数据结构与算法分析 c语言描述 pdf 高清下载 – 易分享电子书PDF资源网 作者: [美] Mark Allen Weiss 出版社: 机械工业出版社 副标题: C语言描述 原作名: Data Structures and Algorithm Analysis in C:Second Edition 译者: 冯舜玺 出版年: 2004-1-1 页数: 391 定价: 35.00元 装帧: 平装 内容简介 · · · · · · 本书是<Data Structures and Alg

数据结构与问题求解-Java语言描述(第三版)

数据结构对程序的重要性不言而喻,用java语言来实现常见的一些数据结构,以及在相应数据结构上的操作对学习java的同学来说是必须掌握的. 本系列博文参考<数据结构与问题求解-Java语言描述(第三版)>来实现 在自己学习的过程中,更希望有机会与大家交流. PS :本人是菜鸟,只是用博客的方式激励自己.请轻喷.Fighting!