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