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)

#!/usr/bib/env python

# -*- coding:utf-8 -*-

"""

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)

"""

class Rational(object):

__slots__ = ('_num', '_den')

@staticmethod

def _gcd(m,n):

while 1:

temp = n % m

if temp == 0:

return m

else:

n = m

m = temp

def __init__(self, num, den=1):

if not isinstance(num, int) or not isinstance(num, int):

raise TypeError

if den == 0:

raise ZeroDivisionError

sign = 1

if num < 0:

num, sign = -num, -sign

if den < 0:

den, sign = -den, -sign

g = Rational._gcd(num, den)

self._num = sign*(num//g)

self._den = den//g

#float

x = self._num / self._den

self._num = x.as_integer_ratio()[0]

self._den = x.as_integer_ratio()[1]

def __add__(self, other):

den = self._den * other._den

num = self._den * other._num + self._num * other._den

return Rational(num, den)

def __sub__(self, other):

den = self._den * other._den

num = self._num * other._den - self._den * other._num

return Rational(num, den)

def __mul__(self, other):

den = self._den * other._den

num = self._num * other._num

return Rational(num, den)

def __floordiv__(self, other):

den = self._den * other._num

num = self._num * other._den

return Rational(num, den)

def __int__(self):

return self._num // self._den

def __float__(self):

return self._num / self._den

def __eq__(self, other):

return self._num * other._den == self._den * other._num

def __ne__(self, other):

return self._num * other._den != self._den * other._num

def __lt__(self, other):

return self._num * other._den < self._den * other._num

def __le__(self, other):

return self._num * other._den <= self._den * other._num

def __gt__(self, other):

return self._num * other._den > self._den * other._num

def __ge__(self, other):

return self._num * other._den >= self._den * other._num

def __str__(self):

return str(self._num) + "/" + str(self._den)

def print(self):

print(self._num, "/", self._den)

def num(self):

return self._num

def den(self):

return self._den

if __name__ == '__main__':

a = Rational(10,5)

b = Rational(1,1000000)

print(a)

print(b)

print("==")

print(a+b)

print(a!=b)

print(int(a))

print(int(b))

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

算法 算法(algorithm)是为求解一个问题需要遵循的.被清楚地指定的简单指令的集合. 数学基础 四个定义: 1.大O表示法: 如果存在正常数 c 和 n0 使得当 N ≥ n0时,T(N) ≤ ...

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

运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...

检索算法 -- 数据结构与算法的javascript描述 第13章

检索算法-如何在列表中查找特定的值. 顺序查找 从列表的第一个元素开始对列表元素逐个进行判断,直到找到了想要的结果,它属于暴力查找技巧的一种,在执行查找时可能会访问到数据结构里的所有元素. 代码: / ...

排序算法 -- 数据结构与算法的javascript描述 第12章

排序是常见的功能,给定一组数据,对其进行排序. 在此之前,我们需要准备个基础工作--自动生成数组,并可以对该组数据做任何处理. /** * 测试类 ,数组 * @param numElements * ...

【数据结构与算法分析——C语言描述】第一章总结 引论

这一章主要复习了一些数学知识,像指数.对数.模运算.级数公式:还有2种证明方法,归纳假设法和反证法.所幸以前学过,重新拾捡起来也比较轻松. 简要地复习了递归,提出了编写递归例程的四条基本法则: 基准情 ...

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

PS:PDF在线地址:http://bcmi.sjtu.edu.cn/~zhaohai/ptm2012/data/Python-kernel.programming.v2.pdf 2-1  变量,pr ...

字典 -- 数据结构与算法的javascript描述 第七章

字典 字典是一种以键-值对形式存储数据的数据结构 最基本功能规划 add 添加数据到字典 remove 从字典中移除数据 get 从字典中取出数据 count 统计字典数据量 find 查找数据在字典 ...

链表的实现 -- 数据结构与算法的javascript描述 第六章

链表 链表是由一组节点组成的集合.每个节点都使用一个对象的引用指向它的后继.指向另一个节点的引用叫做链 结构示意图 : 链表头需要我们标识 head { element:head,next:obj1 ...

队列的实现 -- 数据结构与算法的javascript描述 第五章

队列也是列表的一种,有不同于列表的规则. 先进先出 入队方法 出队方法 可以找到队首 可以找到队尾 可以查看队列有多长 可以查看队列是否为空 这是一个基本的需求,围绕他来实现,当然我们可以自己扩展列表 ...

随机推荐

eval解析JSON中的注意点

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery ...

Selenium脚本编写环境的搭建&sol;XPath

编写环境主要分为三个部分: JUnit : java单元测试框架: Firebug: firefox 附加组件,Firebug是firefox下的一个扩展,能够调试所有网站语言,如Html,Css等, ...

理解HTTP session原理及应用

转自:http://www.2cto.com/kf/201206/135471.html 一.术语session在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣 ...

css案例学习之div a实现立体菜单

效果 代码

python数据结构题目_《数据结构与算法Python语言描述》习题第二章第三题(python版)...相关推荐

  1. 数据结构python语言描述课后答案_《数据结构与算法Python语言描述》习题第二章第三题(python版)...

    1 #!/usr/bib/env python 2 #-*- coding:utf-8 -*- 3 4 """ 5 ADT Rational: #定义有理数的抽象数据类型 ...

  2. 数据结构与算法JAVA语言描述第六章部分课后习题参考答案

    6.2: (a): (b): 6.3: (a): (b): 6.19: 6.26: 6.32:

  3. 数据结构python课后答案_数据结构与算法:Python语言描述 1~5章课后习题

    数据结构与算法:Python语言描述 1~5章课后习题 发布时间:2018-07-19 20:42, 浏览次数:1885 , 标签: Python MarkDown语法写的,不知道为啥上传到CSDN不 ...

  4. java递归单链表查找中间元素_《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)...

    转载请注明出处:http://blog.csdn.net/xdz78 #include #include //查找单链表中的特定元素,<数据结构与算法--c语言描述> 3.11 答案 in ...

  5. 数据结构java实验 刘小晶_《数据结构实例解析与实验指导——Java语言描述》刘小晶著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 刘小晶著 出版社:清华大学出版社 出版时间:2013-2-1 版次:1 印次:1 印刷时间:2013-2-1 字数:619000 页数:380 开本:16开 装帧:平装 ISBN:9 ...

  6. linux python开发环境sql数据迁移到mysql_运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库...

    运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 一.实验环境: Python2.7.10.pycharm.VM虚拟机.CentOS6.3.mys ...

  7. python程序设计第二章序列类型 题库及选解

    由于学校的python是笔试,所以找了份感觉比较好的题库刷了下其中前八章的填空和判断,附上选解.各章链接如下 python程序设计题库完整版 https://blog.csdn.net/lijia11 ...

  8. 密码学实验报告c语言程序,密码学_实验一_古典密码算法_C语言.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp实验设计 密码学_实验一_古典密码算法_C语言.doc8页 本 ...

  9. 殷人昆 数据结构(用面向对象方法与C++语言描述)(第二版)实现汇总(持续更新)

    殷人昆 数据结构(用面向对象方法与C++语言描述)(第二版)实现汇总 殷人昆 数据结构(用面向对象方法与C++语言描述)(第二版)实现汇总 第二章 线性表 第二章 线性表 约瑟夫问题(线性表实现)约瑟 ...

最新文章

  1. 中国率先发布全球首份车路协同技术白皮书!清华百度联手,突破自动驾驶规模落地瓶颈...
  2. 易语言开发c s,Grid++Report报表工具C/S实战项目演练
  3. 微信公众号api关注接口php,1.1 公众号接口绑定
  4. (75)内核APC执行过程,分析 KiDeliverApc 函数
  5. ECSTORE 关于FILTER条件所代表的含义
  6. lecture 4 : More Objective-C
  7. 写给前端的算法进阶指南,我是如何两个月零基础刷200题 等推荐
  8. c语言学习-使用指针对三个变量互相赋值
  9. glassfish启动后不能进入部署页面_Flink on Yarn三部曲之二:部署和设置
  10. 刚刚,阿里发布了一个重磅技术炸弹,70% 的程序员受影响!
  11. 员工转正述职答辩问什么问题_实习期员工转正述职报告
  12. 区块链入门导航-磨链社区
  13. 新域名 @live.com 和 @windowslive.com 即将上线 (from cnbeta)
  14. Linux文件归档与压缩命令
  15. 普适计算-2014/03/14
  16. python 图片识别_Python—识别图片中的文字
  17. Python 根据身份证号计算生日,年龄和性别
  18. 《小狗钱钱》阅读笔记
  19. 什么是 ArrayList
  20. 使用android.view.TouchDelegate扩大View的触摸点击区域

热门文章

  1. Pico Pro Maker Kit NXP i.MX7D刷入Android Things
  2. Spring Cloud生态系统
  3. Raft 一致性算法论文译文
  4. 数据埋点太难!知乎的做法有何可借鉴之处?
  5. 大剑无锋之一句话输出表中每一个同学的成绩最高的课程【面试推荐】
  6. 利剑无意之面试题(一)
  7. vb 绘制图形/蝴蝶动画
  8. 牛客网_PAT乙级_1020完美数列(25)【vector sort 最后一个测试用例超时】
  9. NumPy之:标量scalars
  10. 小师妹学JavaIO之:Buffer和Buff