鑑於此字符串試圖找到子在大字符串
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