解锁即可观看《Python全能工程师2022》完整课程视频

Python全能工程师2022

2022版全新上线!覆盖Python五大热门就业方向,零基础进击多领域高薪岗位。全能培养,告别选择困扰

【第1周】环境搭建与基础语法
【第2周】三大主流数据类型的操作
【第3周】Python流程控制与函数
【第4周】Python面向对象与异常处理机制
【第5周】Python模块与文件操作
【第6周】多线程编程、正则表达式与综合项目实战
【第7周】Python办公自动化
【第8周】MySQL数据库
【第9周】Python与MySQL的交互
【第10周】Redis数据库
【第11周】MongoDB数据库
【第12周】开发必备前端基础之HTML与CSS
【第13周】开发必备前端基础之JavaScript与jQuery
【第14周】初探网络爬虫
【第15周】网络爬虫进阶与实战
【第16周】高级爬虫框架
【第17~18周】高级爬虫项目实战与爬虫面试指导
【第19周】数据分析入门
【第20周】数据分析进阶:数据可视化
【第21周】数据分析进阶:统计分析与机器学习
【第22周】数据分析项目综合实战与就业指导
【第23周】企业级开发语言ES6与前端开发框架Bootstrap
【第24周】夯实框架基础:Python全栈开发必学后端主流框架Flask
【第25周】项目实战:Flask实战开发在线问答系统
【第26周】入门Python Web全栈开发必备主流框架Django
【第27周】Django ORM模型和表单
【第28周】前端框架基础:前端开发必学Vue框架
【第29周】项目实战:Django+Vue全栈开发旅游网项目首页
【第30周】项目实战:Django+Vue全栈开发旅游网项目景点详情模块
【第31周】项目实战:Django+Vue全栈开发旅游网项目登录注册模块
【第32周】项目实战:Django+Vue全栈开发旅游网项目订单支付模块
【第33周】项目实战:全栈开发旅游项目后台管理系统与项目部署
【第34~35周】Python技能拓展之软件自动化测试
【第36周】Python技能拓展之人工智能
章节
问答
课签
笔记
评论
占位
占位

Python类的数学运算

事实上,Python很多的操作都是通过内建函数来实现的,比如最熟悉的加减乘除,都是通过内建函数来实现的,分别是__add____sub____mul____truediv__。因此,只要我们的自定义类实现了相关的内建函数,我们的类对象,也可以做到加减乘除。
对于有理数,我们可以使用Rational类来表示:

​class Rational(object):
    def __init__(self, p, q):
        self.p = p
        self.q = q

其中,p、q 都是整数,表示有理数 p/q。
如果要让Rational进行加法运算,需要正确实现__add__:

class Rational(object):
    def __init__(self, p, q):
        self.p = p
        self.q = q
    def __add__(self, r):
        return Rational(self.p * r.q + self.q * r.p, self.q * r.q)
    def __str__(self):
        return '{}/{}'.format(self.p, self.q)

定义好后,就可以尝试一下有理数的加法了:

>>> r1 = Rational(1, 2)
>>> r2 = Rational(2, 3)
>>> print(r1 + r2)
7/6

需要注意__add__()函数,它有一个参数,表示的是运算的第二个操作数,比如:r1 + r2,那么在__add__()方法中的参数,r指的就是r2,这个参数是运算符重载的时候传递的。
另外,细心的同学可能注意到了,相比加减乘的特殊方法,除法的特殊方法名字较长
__truediv__,并且含有true这样的描述,这其实和Python除法是有关系的。
Python的除法可以分为地板除(你没看错,就是地板)和普通除法,地板除的特殊方法是
__floordiv__,普通除法是__truediv__
地板除法和普通除法不一样,地板除法的结果只会向下取整数

>>> num = 5
>>> num.__truediv__(3)
1.6666666666666667
>>> num.__floordiv__(3)
1 # 向下取整
>>> num = 7
>>> num.__floordiv__(3)
2

在运算中,普通除法使用/表示,而地板除使用//表示。

>>> 5 / 3
1.6666666666666667
>>> 5 // 3
1

任务

Rational类虽然可以做加法,但无法做减法、乘法和除法,请继续完善Rational类,实现四则运算。

 

?不会了怎么办

请在本地编写代码练习

参考答案:

def gcd(a, b):
    if b == 0:
        return a
    return gcd(b, a % b)

class Rational(object):
    def __init__(self, p, q):
        self.p = p
        self.q = q
    def __add__(self, r):
        return Rational(self.p * r.q + self.q * r.p, 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 __truediv__(self, r):
        return Rational(self.p * r.q, self.q * r.p)
    def __str__(self):
        g = gcd(self.p, self.q)
        return '{}/{}'.format(int(self.p/g), int(self.q/g))

r1 = Rational(1, 2)
r2 = Rational(1, 5)
print(r1 + r2)
print(r1 - r2)
print(r1 * r2)
print(r1 / r2)
||

提问题

写笔记

公开笔记
提交
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布
全部 我要发布
最热 最新
只看我的

手记推荐

更多

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?