推荐一个刷题网站,体验过一段时间了,真的建议去试试。

对于Python很少有基础题库,牛客针对基础专项出题,目前还出炉了数据分析和机器学习 。

不仅是Python,还有Java、C语言C++、数据库SQL、算法、HTML/CSS等很多语言的练习题库,功能很强大,点击这里开始练题

考完试第一篇文章耶!

 我尽力了,画了一个多小时

第一次画这种画,浅看一下,重要的是暑假快乐哇!

之前因为括号报错而在这里提出问答,实在是不该,太低级的错误了。这次就好好解释一下复数的四则运算怎么来。在这里用了类方法。

复数四则运算本身并不难,但由于复数  i^2= -1,需要进行实部虚部分别计算。所以这并不仅仅涉及普通数字的乘除运算。在这里要用到四则运算公式,如下:

加法法则: (a+bi)+ (c+di) = (a+c) + (b+d)i;

减法法则: (a+bi) - (c+di) = (a-c) + (b-d)i;

乘法法则: (a+bi)(c+di) = (ac - bd)+ (ad+bc)i

除法法则:

在运算中,a = self.x          c = other.x          b = self.y          d = other.y

接着只要按照公式,将原本的a b c d 在程序中改成self和other的形式

代码如下:

#  用类实现复数的运算

class Complex:  # 定义Complex类
    def __init__(self, x, y):
        self.x = x
        self.y = y

    # 定义方法 加 ,可用魔法方法__add__()
    def __add__(self, other):
        return Complex(self.x + other.x, self.y + other.y)  # 返回两个值的相加结果

    # 定义方法 减 ,可用魔法方法__sub__()
    def __sub__(self, other):
        return Complex(self.x - other.x, self.y - other.y)  # 返回两个值的相减结果

    # 定义方法 乘 ,可用魔法方法__mul__()
    def __mul__(self, other):
        return Complex(self.x * other.x - self.y * other.y, other.x * self.y + self.x * other.y)  # 返回两个值的复数相乘结果

    # 定义方法 除 ,可用魔法方法__truediv__()
    def __truediv__(self, other):
        return Complex((self.x * other.x + self.y * other.y) / (other.x * other.x + other.y * other.y),
                       (other.x * self.y - self.x * other.y) / (other.x * other.x + other.y * other.y))  # 返回两个值的复数相除结果

    def __str__(self):
        return "%d + %di" % (self.x, self.y)


c1 = Complex(2, 4)  # 2 + 4i,传入实部2,虚部4
c2 = Complex(3, 1)  # 3 + i,传入实部3,虚部1
c3 = c1 + c2  # 将相加结果赋值给c3 ,这里由于加号,自动触动上面的魔法方法add,下同
c4 = c1 - c2  # 将相减结果赋值给c4
c5 = c1 * c2  # 将相乘结果赋值给c5
c6 = c1 / c2  # 将相除结果赋值给c6
print(c3)
print(c4)
print(c5)
print(c6)

运行结果:

5 + 5i        #相加
-1 + 3i       #相减
2 + 14i      #相乘

1 + 1i        #相除

 魔法方法:

通俗讲就是,自己定义一种方法,实现你想要它完成的运算(如上add方法,实现复数相加运算),当你的对象用到了这种方法(c3 = c1 + c2),则自动调用add方法实现你希望它完成的相加运算(在这里是复数相加运算,而不只是普通的相加),这是一种非常强大的功能,标志就是前后会各有两个下划线__

欢迎交流!

放假快乐!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐