2016-08-22 12 views
-1

私はPythonでコードに固執しました。私はPythonの初心者です。
多項式を基本的な方法で追加しようとしましたが、値を辞書として取得してリストに変換して戻す方法がわかりません。ディクショナリのpythonでのリスト操作のエラー

def add(s1,s2): 
    if len(s1) > len(s2): 
     new = [i for i in s1] 
     for i in range(len(s2)): new[i] += s2[i] 
    else: 
     new = [i for i in s2] 
     for i in range(len(s1)): new[i] += s1[i] 
    return new 

私はこのプログラムを実行すると、私は

add((2,0),(3,1)) [5,1] 

として出力を得たが、私は私にエラーを与える、このadd([(4,3),(3,0)],[(-4,3),(2,1)])のように入力を与えた:
これは私がしようとしているコードです。辞書を次のコードの入力として取得するにはどうすればよいですか?私は

addpoly([(4,3),(3,0)],[(-4,3),(2,1)]) it should give me 
[(2, 1),(3, 0)] 

などの入力を与えた場合の出力がゼロであった場合、例えば は、[]は空のリストを返すべきです。

+2

私はあなたの例ではすべての辞書が表示されない、それはタプルのリストですか? – roganjosh

+1

エラーが出る理由は、あなたが '(4,3)+(-4,3)'をしようとしていることです。これはうまくいきません。これは再帰的に動作しますか? – L3viathan

+0

@DanielLeeそれは辞書の有効な構文ではないことを除いて。 '{'key':(4、3)、...}'は、dictを構築する正しい方法です。 – roganjosh

答えて

2

私のpython-3.xの中で、あなたのコードを実行していますし、それが入力add([(4,3),(3,0)],[(-4,3),(2,1)])のために別のリスト内のリストがあるので、それは、入力の唯一の連結です[(-4, 3, 4, 3), (2, 1, 3, 0)]
のような出力を提供します。以上の説明のため

:入力add([(1,1),(2,2),(3,3)],[(-1,-1),(-2,-2),(-3,-3)])ようなものであるならば、出力される:[(-1、-1、1、1)、(-2、-2、2、2)、(-3、-3、3、3)]

そして、2つのリストの要素のコードを追加する:

def add(s1,s2): 
if len(s1) > len(s2): 
    new = [i for i in s1] 
    for i in range(len(s2)): 
     if(isinstance(new[i], int)): 
      new[i] += s2[i] 
     else: 
      t1 = new[i][0] + s2[i][0] 
      t2 = new[i][1] + s2[i][1] 
      new[i] = (t1,t2) 
else: 
    new = [i for i in s2] 
    for i in range(len(s1)): 
     if(isinstance(new[i], int)): 
      new[i] += s1[i] 
     else: 
      t1 = new[i][0] + s1[i][0] 
      t2 = new[i][1] + s1[i][1] 
      new[i] = (t1,t2) 
return new 

我々が入力を与える場合:

我々は出力を得る:

[(0, 0), (0, 0), (0, 0)] 
[5, 1] 
[(0, 0), (0, 0), (3, 3)] 
関連する問題