How sort out issue in Python function for add two polynomials

匿名 (未验证) 提交于 2019-12-03 08:33:39

问题:

Each term of the polynomial can be represented as a pair of integers (coefficient,exponent)

  def addpoly(p1,p2):     p1=p1+p2     d=dict(p1)     dvalue=list(set(d.values()))     dkey=list(d.keys())     result={}     for n in dvalue:       result[n] = 0       for m in dkey:         if n == d[m]:           result[n] = result[n] + m  rkey=list(result.keys()) for i in rkey:   if result[i]==0:     del result[i]  coff=sorted(list(result.keys())) coff.reverse() ans=[(result[k],k) for k in coff]  return(ans) 

this program is giving correct output, except rest of few cases

For this call addpoly([(1,1),(-1,0)],[(1,2),(1,1),(1,0)])does not give correct answer, it output [] instead of [(1,2),(2,1)]. What I reason for this when I convert p1+p2 to dictionary it removes same key items like-- p1+p2=[(1,1),(-1,0),(1,2),(1,1),(1,0)] dict(p1+p2) gives {-1:0,1:0}.

回答1:

i tried again & again finally got answer myself to above problem def addpoly(p1,p2):

dp1=dict(map(reversed, p1)) dp2=dict(map(reversed, p2))  d=dict(map(reversed, p1+p2)) dkey=list(d.keys()) result={} for n in dkey:     result[n] = 0     if n in dp1.keys():         result[n] = result[n] + dp1[n]     if n in dp2.keys():         result[n] = result[n] + dp2[n]  rkey=list(result.keys()) for i in rkey:     if result[i]==0:         del result[i]  coff=sorted(list(result.keys())) coff.reverse() ans=[(result[k],k) for k in coff]  return(ans) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!