n度とm度の2つの多項式の加算を計算するプログラムを作成するように依頼されました。2つの辞書(1つは最初の多項式用、もう1つは他の多項式用)を作成しました。それぞれに値としての係数とキーとしての度があり、両方の辞書のキーが同一であるかどうかを確認できるため、それらを合計できます。値。しかし、なぜいつもエラーが発生するのかわかりません。これまでの私のコードは次のとおりです。
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
これは機能しません!しかし、クラスメソッドを使用せずに追加を行った場合は機能しました。私は初心者で、問題を解決するために最善を尽くしました。
別の質問は、私のコードのdefstrをどのように書くかです。最初は何を書けばいいのかわからない。申し訳ありませんが、プログラミングは初めてで、私のような簡単なコードが必要です。