Я почти уверен, что в моей программе есть еще одна глупая ошибка, но я не могу ее найти. Я пытался гуглить, но пока безрезультатно.

Я пытаюсь использовать метод 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

ДНК - это строка, а checkPalindrome - более ранняя функция, которая проверяет, является ли фрагмент ДНК палиндромом.

0
Danielle 24 Апр 2017 в 01:54

2 ответа

Лучший ответ
DNA = DNA.upper()

Без скобок вы ссылаетесь на функцию upper, но не выполняете ее. DNA становится функцией и больше не является строкой.

1
Arya McCarthy 23 Апр 2017 в 22:59

Ваша строка DNA = DNA.upper должна быть:

DNA = DNA.upper()

Вы присвоили функцию DNA.upper переменной DNA, поэтому она больше не является строкой.

1
Craig 23 Апр 2017 в 22:59