2016-11-01 7 views
2

I am trying to answer the same exam question as this OPを使用します。投稿は関連していますが、要求されたヘルプは異なります。Python 3:リストを評価するにはn * x ** k(general_poly)

私は私のテストケースについて話しましょう、なぜ私はそれが一瞬で意味的な誤りである必要がありますが、考えている最初の...

は、試験問題:

Write a function called general_poly, that would, for example, evaluate >general_poly([1, 2, 3, 4])(10) to 1234 because *1*10^3 + 2*10^2 + 3*10^1 + >4*10^0*.

So in the example the function only takes one argument with general_poly([1, 2, 3, 4]) and it returns a function that you can apply to a value, in this case x = 10 with general_poly([1, 2, 3, 4])(10).

私のコード:

def general_poly(L): 
    def in_poly(x): 
     total = 0 
     for i in range(0, len(L)): 
      k = (len(L)-1) - i 
      total += (L[i] * (x**k)) 
     return total 
    return in_poly(x) 

我々はエラー(s)は、具体的またはコードをテストするために使用されるリスト与えられた、唯一の合格/不合格いるもの語られていない(エラースロー)、およびCOR 6つのテストのそれぞれについての正解です。

ただし、最初の質問に対する回答が1234であるため、ヒントが与えられています。これは例です。

少なくとも1つは正しいと思っていますが、コードは6つのテストすべてに失敗しています。電卓で結果を検証 - -

これら

は、私が実行したテストケースの一部ですので、私は間違っている計算とは思わない: general_poly:

  • ([1,2,3 、4,1,2,3,4])(10)= 12341234;
  • ([1,2,3,4])(0)= 4;
  • ([1,2,3,4])( - 7)= -262;
  • ([5,6,7,8,9])(28)=713;
  • ([103、42、-78、-3.26])(9)= 77783.74

Iはまた、インデントをチェック出力があったことが確認され、ラインによってそれを介してラインを実行し、スペルをチェックしています幸運はありません。

私はgeneral_poly(L)(x)として機能を呼び出せないという事実に接続されているかもしれません。私は関数を呼び出す前に、個別のxを宣言するために持っているか、私が手:

TypeError: 'int' object is not callable 
+0

@Morgan Thrapp私はちょうど私のコードのフォーマットエラーを編集しようとしましたが、あなたはそれを打ちました。ありがとうございました。 – Dethcow

+0

問題ありません。マークダウンでフォーマットされたコードの前に空白行がなければなりません。 –

答えて

3

リターン機能を

return in_poly 

を、それを呼び出すことがないわけではない

return in_poly(x) 

in_poly(x)

は、整数、ではありません関数。

+1

レコードのために、トレースバックが 'TypeError: 'int'オブジェクトは呼び出し可能ではありません。 ' –

+0

@パトリック私はそれを試していたし、それは動作しませんでした...あなたがPythonの家庭教師の原因で停止したとき、それは機能を実装しませんでした。しかし、その変更は20/20でした!ありがとう! – Dethcow

+0

@Andreこれは私が正解を得るために4つのチャンスに至ったグレーダーで試していなかった理由です。だからアナコンダはエラーを起こすが、グレーダーはエラーを起こさなかった。おそらく、それはグレーダーの別の関数に返されていたからだが、私のものではないからだ。 – Dethcow

関連する問題