2017-04-25 3 views
0

戻っている ここに私のGetItemための私のコードです:なぜ私の方法のオペレータが、私は、多項式クラスを書いていないし、私のGetItem演算子でトラブルを抱えているどれ

def __getitem__(self, idx): 
     for i in range(len(self.coeffs)): 
      if self.coeffs[i][1] == idx: 
       return (self.coeffs[i][0]) 
       break 

とここに私のテストコードです:

for i in range(P1.degree() + 1): 
      if P1[i] != 0: 
       print(P1[i], end = " ") 

多項式は6X^14 + 9X^11-12x^3 + 42であり、それはしかし、すべての非ゼロ係数を返し、私はこの

42 None None -12 None None None None None None None 9 None None 6 
のような出力を得ます

私の質問はどのように私はcoeffientsを表示することができますまた、なぜもとにかく表示されません?

+3

'if'文が決してマッチしない場合、関数が最後に落ちると' None'が返されます。 – BrenBarn

+3

1)関数の終わりに達すると、すべてのpython関数は暗黙的に 'None'を返します。 2)すべての**値を無条件に印刷するには、コードを_スキップします。 'P1 [i]'の値であれば 'None'と表示してはどうですか? –

+1

'return'(https://docs.python.org/3.6/reference/simple_stmts.html#return)の後の' break'は、 'return'がすでに現在の関数を離れるので不要です。 –

答えて

0

あなたはNoneを返さないから、それを防ぐため、代わりに返すように機能のGetItemの終わりに リターン0 を入れて試すことができます値0

P1場合、これは」チェックを行います[I]!= 0: "の値がfalseになることをテストコードで確認し、Noneが来て、Noneの値が出力されないようにします。

関連する問題