Подтвердить что ты не робот

Непоследовательное использование вкладок и пробелов в отступе

def contains_sequence(dna1, dna2):
    ''' (str, str) -> bool

    Return True if and only if DNA sequence dna2 occurs in the DNA sequence
    dna1.

    >>> contains_sequence('ATCGGC', 'GG')
    True
    >>> contains_sequence('ATCGGC', 'GT')
    False

    '''
    b=False
    len2=len(dna2)
    i=0
    for j in dna1:
        temp=dna1[i:i+len2]
        if temp == dna2:
            b=True
        i=i+1
    return b

Я новичок в Python. Вложенная выше программа дает мне ошибку "Непоследовательное использование вкладок и пробелов в отступе" в строке "if temp == dna2:" конкретно. Может кто-то, пожалуйста, помогите мне узнать, как отступы неверны?

4b9b3361

Ответ 1

Это означает, что вы смешали пробелы и вкладки в отступе. Вы должны исправить это, чтобы быть совместимым с вкладками или пробелами.

Ответ 2

Если вы внимательно посмотрите на строки

    temp=dna1[i:i+len2]
    if temp == dna2:

в вашем коде, вы увидите, что "пространство" в начале каждой строки "построено" по-разному. В одном случае он использует вкладки и в других пространствах или, если у обоих есть вкладки и пробелы, они используются в разных комбинациях.

Вы можете проверить это, поместив курсор в начало каждой строки и используя клавишу со стрелкой вправо, чтобы "пройти" по вашему пути через символы. Вы увидите, что курсор перемещается по-разному в каждой строке.

Чтобы исправить, удалите вкладки и пробелы в начале каждой строки и снова вставьте их с одинаковыми символами в каждой строке.

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

Ответ 3

Предполагая, что у вас есть "хорошая" среда IDE, лучше всего установить ключ вкладки, чтобы сделать 4 пробела вместо "вкладки", таким образом у вас меньше проблем, и это хорошая практика, когда вы будете работать с другими людьми,

Ответ 4

В соответствии со строками Doc

ваш код:

b=False
len2=len(dna2)
i=0
for j in dna1:
    temp=dna1[i:i+len2]
    if temp == dna2:
        b=True
    i=i+1
return b

Этот большой код можно упростить до одной строки

return dna1.find(dna2)>=0

Также, если u не хорош с углублениями в редакторе "vim", его хорошо практиковать в IDLE3