解释器返回“UnboundLocalError:赋值前引用的局部变量'len'错误

时间:2017-10-03 09:14:06

标签: python

我正在处理LeetCode问题Longest Palindromic Substring,并且有以下代码:

    def longestPalindrome(s):
    """
    :type s: str
    :rtype: str
    """
    length = len(s)
    lookup = [[False for i in range(1000)] for j in range(1000)]
    for i in range(0,length):
        lookup[i][i] = True
        longestBegin = i
        maxL = 1
    for i in range(0,length-1):
        if s[i] == s[i+1]:
            lookup[i][i+1] = True
            longestBegin = i
            maxL = 2
    for len in range(3,n+1):
        i = 0
        while i <= n-len+1:
            j = i + len -1
            if lookup[i+1][j-1] and s[i] == s[j]:
                lookup[i][j] = True
                longestBegin = i
                maxL = len
    return s[longestBegin:longestBegin+maxL]

当我调用函数longestPalindrome('abdad')时,我收到错误:

“运行时错误消息: 第7行:UnboundLocalError:在赋值“。

之前引用的局部变量'len'

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您使用len作为本地变量名称,通过for循环指定它:

for len in range(3,n+1):

这使len成为整个函数中的本地,掩盖了内置的len()函数。您不能将名称len用作本地名称和全局名称。

因此,使用length = len(s)失败,因为本地名称len尚未分配任何内容(它尚未绑定)。为for循环目标使用不同的名称。