2016-08-21 13 views
-1

を追加するためにどのようにこのプログラムは、いくつかの残りの部分を除いて、正しい出力を与えている多項式の各項は整数(係数、指数)のペアとして表すことができる2つの多項式

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) 

Python関数で問題を整理ケース

この電話では、addpoly([(1,1),(-1,0)],[(1,2),(1,1),(1,0)])は正解ではなく、[(1,2),(2,1)]の代わりに[]を出力します。 p1+p2を辞書に変換するときに私がこれを理由にしたのは、p1+p2=[(1,1),(-1,0),(1,2),(1,1),(1,0)] dict(p1+p2)のように同じキー項目を削除すると{-1:0,1:0}となります。

答えて

0

私は最終的にデフ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)