Непоследовательное использование табуляции и пробелов в отступах
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. Программа, вставленная выше, дает мне ошибку "непоследовательное использование вкладок и пробелов в отступе" в строке "если temp == dna2:" в частности. Может кто-нибудь, пожалуйста, помогите мне выяснить, как отступ неправильный?
4 ответов
Это означает, что вы перепутали пробелы и знаки табуляции в отступах. Вы должны исправить это, чтобы соответствовать вкладкам или пробелам.
Если вы внимательно посмотрите на строки
temp=dna1[i:i+len2]
if temp == dna2:
в вашем коде вы увидите, что "пробел" в начале каждой строки "построен" по-разному. В одном случае он использует вкладки, а в другом пробелы, или, если у обоих есть вкладки и пробелы, они используются в разных комбинациях.
вы можете изучить это, поместив курсор в начале каждой строки и используя клавишу со стрелкой вправо, чтобы "пройти" свой путь через символы. Вы увидите, что курсор движется по-разному на каждой линии.
чтобы исправить, удалите вкладки и пробелы в начале каждой строки и повторно вставьте их с теми же символами на каждой строке.
чтобы избежать в будущем, приучите себя использовать только клавишу tab или клавишу space для отступа и подумайте о настройке редактора для автоматического преобразования вкладок в пробелы.
предполагая, что у вас есть" хорошая "IDE, лучше всего установить клавишу tab, чтобы сделать 4 пробела вместо" tab", таким образом, у вас меньше проблем, и это хорошая практика, когда вы будете работать с другими людьми.
в соответствии с вашими строками 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