推荐一个刷题网站,体验过一段时间了,真的建议去试试。
对于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方法实现你希望它完成的相加运算(在这里是复数相加运算,而不只是普通的相加),这是一种非常强大的功能,标志就是前后会各有两个下划线__
欢迎交流!