0
我写了这个多项式类,但是我在通过加载程序得到正确的结果时遇到问题。它适用于多项式的最高和最低度数,但它会返回内部度数的不正确系数。我认为这与我更新系数值的方式有关。请帮忙。两个多项式的乘积python
class Polynomial:
def __init__(self, *termpairs):
termdict1={}
for i in termpairs:
termdict1[i[1]]=i[0]
self.termdict = termdict1
def __str__(self):
k = sorted(self.termdict, reverse = True)
v = 0
x = ''
for i in k:
if i == 0:
x += str(self.termdict.get(i))
elif i == 1:
if self.termdict.get(i) > 0:
x+=' + '
x+=str(self.termdict.get(i))
x+='x'
else:
x+= ' - '
x+=str(abs(self.termdict.get(i)))
x+='x'
elif i > 1:
if self.termdict.get(i) > 0:
x+=' + '
x+=str(self.termdict.get(i))
x+='x^'
x+=str(i)
else:
x+=' - '
x+=str(abs(self.termdict.get(i)))
x+='x^'
x+=str(i)
elif i < 0:
x+=' - '
x+=str(abs(self.termdict.get(i)))
x+='x^'
x+=str(i)
if x[1] == '+':
return(x[3:])
else:
return(x)
def degree(self):
k = sorted(self.termdict, reverse = True)
return(k[0])
def evaluate(self,x):
final = 0
for k,v in self.termdict.items():
print(k,v)
final += v*(x**k)
return(final)
def addterm(self,x,y):
if y in self.termdict.keys():
self.termdict[y] = (self.termdict.get(y) + x)
else:
self.termdict[y] = x
return(self.termdict)
def removeterm(self,x):
if x in self.termdict.keys():
del self.termdict[x]
return(self.termdict)
def scale(self,x):
for k in self.termdict.keys():
self.termdict[k] = (self.termdict.get(k) * x)
return(self.termdict)
def __add__(self,other):
New = Polynomial()
for k,v in self.termdict.items():
New.addterm(v,k)
for k,v in other.termdict.items():
New.addterm(v,k)
def __sub__(self,other):
s = Polynomial()
x = Polynomial()
for k,v in self.termdict.items():
s.addterm(v,k)
print(s.termdict)
for key in other.termdict.keys():
s.removeterm(key)
for k,v in other.termdict.items():
x.addterm(v,k)
print(x.termdict)
for key in self.termdict.keys():
x.removeterm(key)
for k,v in x.termdict.items():
s.addterm(-1*v,k)
print(s.termdict)
return(s.termdict)
def __mul__(self,other):
S = Polynomial()
for k,v in other.termdict.items():
for key, value in self.termdict.items():
S.termdict[key+k]=(value*v)
print(S)