Учитывая эту строкуПытаясь найти подстроки в строке большой
dna3 = "CATGTAATAGATGAATGACTGATAGATATGCTTGTATGCTATGAAAATGTGAAATGACCC"
следующий код должен напечатать следующие 4 подстроки.
ATGTAA
ATGAATGACTGATAG
ATGCTATGA
ATGTGA
Однако печать следующее:
ATGTAA
ATGAATGACTGATAG
ATGACTGATAGATATGCTTGTATGCTATGAAAATGTGAAATGACCC
ATGCTTGTATGCTATGAAAATGTGAAATGACCC
ATGCTATGA
ATGAAAATGTGA
ATGTGA
ATGACCC
None
Может кто-то пожалуйста, помогите мне понять это. Спасибо.
def findStopIndex(dna,index):
stop1 = dna.find("tga",index)
if(stop1 == -1 or (stop1-index) % 3 != 0):
stop1 = len(dna)
stop2 = dna.find("taa",index)
if(stop2 == -1 or (stop2-index) % 3 != 0):
stop2 = len(dna)
stop3 = dna.find("tag",index)
if(stop3 == -1 or (stop3-index) % 3 != 0):
stop3 = len(dna)
return min(stop1, min(stop2,stop3))
def printAll(dna):
gene = None
start = 0
while(True):
loc = dna.find("atg", start)
if(loc == -1):break
stop = findStopIndex(dna,loc+3)
gene = dna[loc:stop+3]
print gene.upper()
start = loc + 3
print printAll(dna3.lower())
Для отладки это я бы напечатать значения индекса, Окончание1, STOP2 и STOP3. Я подозреваю, что вы увидите, что один из значений не тот, который вы ожидаете. –
'min' может использоваться с несколькими аргументами:' min (stop1, stop2, stop3) '. – Daniel
'if' и' while' не являются функциями, поэтому скобки не нужны. – Daniel