2017-04-13 8 views
-1

私はラグランジュ補間を実装するはずの次のコードを持っています。このコードを実行すると、インデントエラーが発生します。これはどこから来たのか分かりません。誰も私がこのエラーの原因とそれを修正する潜在的な方法を説明するのを助けることができますか?次のPythonコードで何が問題になっていますか?

points =[(0,0),(25,30),(50,10), (57,0)] 
P = lagrange(points, 10) 
print (P) 

def lagrange(f, x): 
     total = 0 
     n = len(f) 
     for i in xrange(n): 
      xi, yi = f[i] 

      def g(i, n): 

       g_tot = 1 
       for j in xrange(n): 
        if i == j: 
         continue 
        xj, yj = f[j] 
        g_tot *= (x - xj)/float(xi - xj) 

       return g_tot 

      total += yi * g(i, n) 
     return total 
+0

「インデントエラー」はインデントエラーを意味します。どのIDEを使用していますか? 'pycharm'を使用している場合は、' commad + option + L(mac) 'とタイプしてインデントエラーを避けるようにコードを再フォーマットしてください!また、 'lagrange'を呼び出す前に定義することを覚えておいてください! – nick

+1

コードがタブとスペースの混在でインデントされていないか確認してください。そうであれば、どちらか一方を使用するように変更してください – khelwood

答えて

-2

Pythonは、空白を使用してコードブロックを識別します。

点= [(0,0)、(25,30)、(50,10)、(57,0)] P =ラグランジュ(点10) プリント(P)

def lagrange(f, x): 
    total = 0 
    n = len(f) 
    for i in xrange(n): 
     xi, yi = f[i] 

     def g(i, n): 
      g_tot = 1 
      for j in xrange(n): 
       if i == j: 
        continue 
       xj, yj = f[j] 
       g_tot *= (x - xj)/float(xi - xj) 
      return g_tot 

     total += yi * g(i, n) 
    return total 

+0

コードブロックについて言えば、それに応じて回答をフォーマットしてください。 – DyZ

0

"予期しないインデント"の問題は、上記のコードを直接Pythonエディタに入力すると発生します。ファイルがまっすぐに走っているときは問題ありません。 (例:python lagrange.py

インデントの問題を修正するには、プログラムの空白行を削除するだけです。または、各空白行に、現在のコードブロックを続行または閉じるための予想されるスペース数があることを確認します。

+0

白い線を削除し、インデントレベルのバランスをとることの間に良い妥協点は、それらをコメントすることです。 – DyZ

関連する問題