1. 程式人生 > 其它 >Rosalind第一題:DNA核甘酸計數(Counting DNA Nucleotides )

Rosalind第一題:DNA核甘酸計數(Counting DNA Nucleotides )

技術標籤:python演算法控制科學與工程

Rosalind(http://rosalind.info/problems/locations/)平臺旨在幫助生信從業者通過解決問題來學習生物資訊學和程式設計(可以理解為生物資訊專業的學習和刷題平臺)
我將其 Bioinformatics Stronghold 板塊中的習題譯為中文,並給出經過測試的一種/多種可行的答案,供大家參考。

問題

是簡單地從一些選擇的符號的有序集合字母並形成一個字;字串的長度是它包含的符號數。

長度為21的DNA字串(其字母包含符號“ A”,“ C”,“ G”和“ T”)的示例為“ ATGCTTCAGAAAGGTCTTACG”。

給定:長度不超過1000 nt的DNA字串。

返回值:四個整數(用空格分隔)計算符號'A','C','G'和'T'在中出現的相應次數。

樣本資料集

AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGGATTAAAAAAAGAGTGTCTGATAGCAGC

樣本輸出

20 12 17 21

python解決方案

#定義變數dnastr以接收核苷酸序列
dnastr='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
#求解方法一:藉助字典
#定義核苷酸字典
dnadict={'A':0,'C':0,'G':0,'T':0}
#迴圈計數
for i in dnastr:
    dnadict[i]+=1
#迴圈輸出
for i in dnadict:
    #end='',覆蓋了print預設的輸出後換行操作
    #即,print有預設引數end='\n'
    print(dnadict[i],' ',end='')
#求解方法二:呼叫內建.count方法
#建立核苷酸列表
dnalist=['A','C','G','T']
#迴圈呼叫計數函式count並輸出結果
for i in range(len(dnalist)):
    print(dnastr.count(dnalist[i]),' ',end='')
#求解方法三:迴圈實現
num_a=num_c=num_g=num_t=0
#通過迴圈、條件測試進行統計
for i in range(len(dnastr)):
    if dnastr[i]=='A':
        num_a+=1
    elif dnastr[i]=='C':
        num_c+=1
    elif dnastr[i]=='G':
        num_g+=1
    elif dnastr[i]=='T':
        num_t+=1
#結果列印
print(num_a,' ',num_c,' ',num_g,' ',num_t)
257   251   246   245