鉴于此字符串试图找到子在大字符串
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,停止2和停止3的值。我怀疑你会看到价值观并不是你所期望的。 –
'min'可以和多个参数一起使用:'min(stop1,stop2,stop3)'。 – Daniel
'if'和'while'不是函数,因此括号是不必要的。 – Daniel