簡體   English   中英

類型錯誤:“函數”對象在查找最長公共子序列時不可下標

[英]TypeError: 'function' object is not subscriptable while finding longest common subsequence

我試圖找到兩個字符串中最長的公共子序列。到目前為止,我已經編寫了以下代碼

def LCS(u, v):  # u[0..m-1], v[0..n-1]
      for r in range(len(u) + 1):
        LCS[r][len(v) + 1] = 0  # r for row
    for c in range(len(v) + 1):
        LCS[len(u) + 1][c] = 0  # c for col
    for c in range(len(v), -1, -1):
        for r in range(len(u), -1, -1):
          if (u[r] == v[c]):
            LCS[r][c] = 1 + LCS[r + 1][c + 1]
          else:
            LCS[r][c] = max(LCS[r + 1][c],
                    LCS[r][c + 1])
    print (LCS[0][0])
s = input()
si=input()
LCS(s,si)

我得到的錯誤是

Traceback (most recent call last):
File "C:/Users/udit/PycharmProjects/untitled/l.py", line 16, in <module>
    LCS(s,si)
  File "C:/Users/udit/PycharmProjects/untitled/l.py", line 3, in LCS
    LCS[r][len(v) + 1] = 0  # r for row
TypeError: 'function' object is not subscriptable

您的函數名為LCS 您不能為函數對象添加下標。

(例如)這行代碼的目的是什么:

LCS[r][len(v) + 1] = 0  # r for row

您是否打算遞歸調用 LCS 函數? 如果是這樣,你有兩個問題。

首先,要調用函數,您需要括號。 像這樣的東西:

LCS(foo, bar)

但是您已經清楚地知道這一點,因為在代碼示例的底部正確調用了 LCS。 所以我不知道該怎么想。

假設您打算調用 LCS,第二個更大的問題是您要分配給函數的結果,這完全沒有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM