【ROSALIND】【練Python,學(xué)生信】03 DNA的反向互補(bǔ)序列

如果第一次閱讀本系列文檔請(qǐng)先移步閱讀【ROSALIND】【練Python,學(xué)生信】00 寫在前面 ?謝謝配合~

題目:
得到DNA的反向互補(bǔ)序列
Given: A DNA string s of length at most 1000 bp.
所給:一條被命名為s的DNA鏈,長(zhǎng)度至少為1000個(gè)堿基。
Return: The reverse complement sc of s.
需得:s的反向互補(bǔ)序列sc。
?
測(cè)試數(shù)據(jù)
AAAACCCGGT
測(cè)試輸出
ACCGGGTTTT
?
生物背景
DAN由反向互補(bǔ)的兩條鏈組成,A和T配對(duì),G和C配對(duì),兩條鏈形成雙螺旋結(jié)構(gòu)。
?
思路
要得反向互補(bǔ)鏈需兩步:序列反向;將各堿基變?yōu)榕鋵?duì)堿基。
?
Python知識(shí)點(diǎn)
根據(jù)字符串切片的方法可以將一個(gè)字符串反向,代碼為sequence[::-1](即開始索引=0,結(jié)束索引=end,步長(zhǎng)=-1)。
利用for循環(huán)語(yǔ)句可以遍歷字符串,if/elif語(yǔ)句進(jìn)行條件判斷。
?
代碼
# s = "AAAACCCGGT"
f = open("rosalind_revc.txt",'r')
s = f.read()
re = s[::-1]? # 字符串反向
c = ""? # 定義字符串c接收互補(bǔ)序列
for i in re:
??? if i == 'A':
??????? c = c + 'T'
??? elif i == 'G':
??????? c = c + 'C'
??? elif i == 'T':
??????? c = c + 'A'
??? elif i == 'C':
??????? c = c + 'G'
?
print(c)