2017-04-13 36 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