题目要求
解决方案
def rev_palindrome(dna):
def reverse_complement(dna):
result = ''
for symbol in dna:
if symbol == 'A':
result = result + 'T'
elif symbol == 'T':
result = result + 'A'
elif symbol == 'C':
result = result + 'G'
elif symbol == 'G':
result = result + 'C'
return result[::-1]
def is_reverse_palindrome(sub):
middle_index = int(len(sub)/2)
if reverse_complement(sub[:middle_index]) == sub[middle_index:]:
return True
return False
result_list = []
for i in range(len(dna)):
for j in range(i+1, len(dna)):
sub_string = dna[i:j+1]
if 4 <= len(sub_string) <= 12:
if is_reverse_palindrome(sub_string):
print(sub_string)
result_tuple = (i, len(sub_string))
result_list.append(result_tuple)
return result_list
#test
print(rev_palindrome("TCAATGCATGCGGGTCTATATGCAT"))
测试结果
成功!!!