我被要求编写一个程序来计算 n 和 m 度的两个多项式的相加。我制作了两个字典(一个用于第一个多项式,另一个用于另一个多项式),因为每个字典都将系数作为值,将度数作为键,以便我可以检查两个字典中的键是否相同,然后我可以将它们相加价值观。但我不知道为什么我总是得到一个错误。到目前为止,我的代码是:
class poly:
def __init__(self, L=[], D=[]):
self.coef=L
self.deg=D
def __add__(self,L2):
if len(self.coef)>len(self.deg):
dec=dict(zip(self.deg,self.coef))
dec[0]=self.coef[-1]
else:
dec=dict(zip(self.deg,self.coef))
Dec1=dec
if len(L2.coef)>len(L2.deg):
dec=dict(zip(L2.deg,L2.coef))
dec[0]=L2.coef[-1]
else:
dec=dict(zip(L2.deg,L2.coef))
Dec2=dec
p=[]
if len(Dec2)>len(Dec1):
for i in Dec2:
if i in Dec1:
s=Dec1[i]+Dec2[i]
p=p+[s]
else:
p=p+p[Dec2[i]]
for x in Dec1:
if x in Dec2:
p=p
else:
p=p+[dec1[x]]
return(poly(p))
if len(Dec2)<len(Dec1):
for x in Dec1:
if x in Dec2:
g=Dec1[x]
p=p+[g]
else:
p=p+[Dec1[x]]
for m in Dec2:
if m in Dec1:
p=p
else:
p=p+[Dec2[m]]
return (poly(p))
此代码不适用于我的所有示例,例如
>>> p=poly([2,4,7,34],[6,4,2])
>>> p1=poly([6,3,7,2,8],[8,4,2,1])
>>> p2=p+p1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
p2=p+p1
File "poly.py", line 31, in __add__
p=p+p[Dec2[i]]
IndexError: list index out of range
>>> #The numbers in the first list is the coefficients and the second list is for degrees
这不行!但是当我在不使用类方法的情况下完成添加时它起作用了。我是初学者,我已尽力解决问题。
另一个问题是如何为我的代码编写 def str?一开始我真的不知道我应该写什么。对不起,伙计们,但我是编程新手,我需要一个简单的代码,比如我的。