2017-10-07 94 views
0

我真的很難學習Python 3,現在我正在爲這一個練習而努力。比較兩個序列

我必須寫一個函數,使用兩個參數:

1)它是一種DNA序列的字符串。

2)相同的長度作爲參數酮(也DNA序列)

函數必須返回一個浮子(那是在兩個DNA序列相同的鹼基比例的字符串)。

所以,我知道我必須寫,這將返回類似這樣的功能:

seq_similarity("ATGC","AGTT") 

應該返回

0.75 

我只走到這一步,現在我被困甚至在我開始之前:

def sequence_similarity(seq1,seq2): 
    seq1="AGTC" 
    seq2="AGTT" 

你能幫我開始嗎?

回答

2

您可以使用sum,並給它一個條件:

sum(x==y for (x,y) in zip(seq1, seq2)) 

這就爲您的兩個字符串說3。

那麼接下來由長度劃分:

sum(x==y for (x,y) in zip(seq1, seq2))/len(seq1) 

當心整數如果使用2.X:

sum(x==y for (x,y) in zip(seq1, seq2))/float(len(seq1)) 
+0

太謝謝你了!這對我最有幫助,因爲我能夠看到爲什麼我這麼難過,因爲它幫助我看到了我應該重讀的書的哪些部分。 – RicklePick

+0

練習列表理解事物和一些內置函數 - 您會感受到它。 – doctorlove

0

有一個內置

from difflib import SequenceMatcher 

def similar(a, b): 
    return SequenceMatcher(None, a, b).ratio()