TypeError: object of type 'builtin_function_or_method' has no len() while using string

TypeError: object of type 'builtin_function_or_method' has no len() while using string

我很确定我的程序还有另一个愚蠢的错误,但我找不到它。我已经尝试 google 一段时间了,但到目前为止还没有结果。

我正在尝试使用 len 方法进行循环。我在程序的不同函数中以完全相同的方式使用它没有问题,但在这个函数中我得到一个 TypeError:

def longestPalindrome(DNA):
    """
    Finds the longest palindrome in a piece of DNA.
    """
    DNA = DNA.upper #makes sure DNA is in all caps
    longest = ""

    for x in range(len(DNA)):
        for y in range(len(DNA)):
            long = DNA[x:y+1]
            if checkPalindrome(long) and (len(long) > len(longest)):
                longest = long           
    return longest

DNA 是一个字符串,checkPalindrome 是一个较早的函数,用于检查一段 DNA 是否为回文。

DNA = DNA.upper()

没有括号,您指的是名为 upper 的函数,但不执行它。 DNA 成为函数,不再是字符串。

你的行 DNA = DNA.upper 应该是:

DNA = DNA.upper()

您已将函数 DNA.upper 分配给变量 DNA,这就是它不再是字符串的原因。