Python 复数的实现

Python 复数的实现,python,python-3.x,class,methods,complex-numbers,Python,Python 3.x,Class,Methods,Complex Numbers,我有这部分代码,我需要实现或修改类中必要的方法,以便程序生成以下输出 c1 = 1+2i c2 = 3-4i c3 = -5 c4 = 6i c5 = -7i c6 = 0 c1 + c2 = 4-2i c1 - c2 = -2+6i c1 * c2 = 11+2i conjugate of c1 = 1-2i 缺少表示复数的复杂类的实现。显然,复数的属性是其实部和虚部(浮点数),不需要保护属性。但我不知道如何实现这一点,以获得上述输出 到目前为止,我有: 代码: def main()

我有这部分代码,我需要实现或修改类中必要的方法,以便程序生成以下输出

c1 = 1+2i 
c2 = 3-4i 
c3 = -5 
c4 = 6i
c5 = -7i
c6 = 0
c1 + c2 = 4-2i
c1 - c2 = -2+6i
c1 * c2 = 11+2i 
conjugate of c1 = 1-2i
缺少表示复数的复杂类的实现。显然,复数的属性是其实部和虚部(浮点数),不需要保护属性。但我不知道如何实现这一点,以获得上述输出

到目前为止,我有:

代码:

def main()
无法更改

输出:

c1 = 1+2i
c2 = 3+-4i
c3 = -5+0i
c4 = 0+6i
c5 = 0+-7i
c6 = 0+0i

您可以使用内置的复数来实现这一点。Python和其他一些语言一样,使用
j
作为虚拟单位,而数学通常使用小写的
i

def main():
c1=1+2j
打印(“c1=”,c1)
c2=3-4j
打印(“c2=”,c2)
c3=-5+0j
打印(“c3=”,c3)
c4=0+6j
打印(“c4=”,c4)
c5=0-7j
打印(“c5=”,c5)
c6=0+0j
打印(“c6=”,c6)
打印(“c1+c2=”,c1+c2)
打印(“c1-c2=”,c1-c2)
打印(“c1*c2=”,c1*c2)
c7=c1.共轭()
打印(“c1=,c7的共轭体)
如果名称=“\uuuuu main\uuuuuuuu”:
main()
它给出了输出:

c1=(1+2j)
c2=(3-4j)
c3=(-5+0j)
c4=6j
c5=-7j
c6=0j
c1+c2=(4-2j)
c1-c2=(-2+6j)
c1*c2=(11+2j)
c1的共轭=(1-2j)
如果您对附加的括号没有意见,那么就完成了。否则,您可以执行输出格式设置,例如:

print(f“c7的共轭={c7.real}{c7.imag:+}j”)
编辑: 如果您的
main()
方法需要使用
Complex
类,您只需包装内置:

类复合体(复合体):
通过
这是因为您的
Complex
类与内置的
Complex
数据类型具有相同的原型。您甚至可以按照您的建议重载
\uu str\uuu(self)
,只要请求
str()
,它就可以工作。因此,
复杂的
类可以如下所示:

类复合体(复合体):
定义(自我):
返回str(self.real)+“+”+str(self.imag)+“i”

为什么不使用numpy来实现此目的?因为这里您只创建字符串,所以无法添加任何内容。@Panda50很遗憾,我无法使用imports您的问题是重新实现复数吗?否则,您可以使用内置复数
1+2j
等。Python和其他一些语言一样,使用
j
作为虚单位,而数学中通常使用小写字母“i”。@Panda50这是一种使用方法的基于数学的问题。。但我和你的关系不太好maths@TerhorstD我认为应该使用内置复数。这是可行的,但不幸的是主代码不能更改,因此我需要在“类复数”下定义方法/函数来执行此操作。我如何实现您提出的
\u str\u(self)
方法哦,哈哈,是的,我忘了
c1 = 1+2i
c2 = 3+-4i
c3 = -5+0i
c4 = 0+6i
c5 = 0+-7i
c6 = 0+0i