zoukankan      html  css  js  c++  java
  • python--数学运算

    数学运算

    Python 提供的基本数据类型 int、float 可以做整数和浮点的四则运算以及乘方等运算。

    但是,四则运算不局限于int和float,还可以是有理数、矩阵等。

    要表示有理数,可以用一个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 '%s/%s' % (self.p, self.q)
        __repr__ = __str__

    现在可以试试有理数加法:

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

    任务

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

    提示:
    减法运算:__sub__
    乘法运算:__mul__
    除法运算:__div__

    代码

    def gcd(a, b):
        if b == 0:
            return a
        else:
            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):
            d = gcd(self.p,self.q)
            return r'%s/%s' % (self.p / d,self.q / d)
    
        __repr__ = __str__
    
    r1 = Rational(1, 2)
    r2 = Rational(1, 4)
    print (r1 + r2)
    print (r1 - r2)
    print (r1 * r2)
    print (r1 / r2)

    运行结果

    3.0/4.0
    1.0/4.0
    1.0/8.0
    2.0/1.0
  • 相关阅读:
    流行的编程思维_面向对象-1
    db_Driver Manager
    SpringAOP
    Spring ioc的核心源码及拓展
    linux内核中把自己写的驱动添加到make menuconfig
    如何参考am335x ti官方技术
    AM335X linux嵌入式平台can驱动移植
    linux AM335x嵌入式平台spi驱动调试
    linux 设备树 gpio获取
    linux 为开发板添加板级文件config.h
  • 原文地址:https://www.cnblogs.com/SCCQ/p/12285426.html
Copyright © 2011-2022 走看看