擅长:python、mysql、java
<p>对于给定代码,15的结果是正确的。每个DNA片段的最大汉明距离是3(每个字母与“AAA”不同),你可以在五个DNA片段中实现这一点。因为“距离”是每个碎片的最大汉明距离之和,那么3×5=15。也许你想用“距离”来表示别的意思?在</p>
<pre><code>dna_list = ['TTACCTTAAC', 'GATATCTGTC', 'ACGGCGTTCG', 'CCCTAAAGAG', 'CGTCAGAGGT']
k_mer = 'AAA'
k_mer_length = len(k_mer)
distance = 0
def HammingDistance(s1, s2):
""" Return the Hamming distance between equal-length sequences """
if len(s1) != len(s2):
raise ValueError("Undefined for sequences of unequal length")
return sum(ch1 != ch2 for ch1, ch2 in zip(s1, s2))
for index, dna in enumerate(dna_list):
greatest_hamming_distance = 0
for offset in range(len(dna) - k_mer_length + 1):
motif = dna[offset:offset + k_mer_length]
hamming_distance = HammingDistance(k_mer, motif)
if hamming_distance > greatest_hamming_distance:
greatest_hamming_distance = hamming_distance
distance += greatest_hamming_distance
print(distance)
</code></pre>