我必须获得一个字符串输入(在本例中是一个DNA密码子序列)并打印出序列中相应的SLC作为输出(例如输入:ATT输出:I)。我目前的代码可以实现这一点,但我想它也迎合了序列的长度不是3整除和输出'X'为那些(例如输入:ATOP输出:IX.是否有办法将结果打印在一行而不是多行?你知道吗
DNA = 'GTTATCTTTPY'
def translate(DNA):
if DNA == 'ATT' or DNA == 'ATC' or DNA == 'ATA':
print 'I'
elif DNA == 'CTT' or DNA == 'CTC' or DNA == 'CTA' or DNA =='CTG' or DNA == 'TTA' or DNA == 'TTG':
print 'L'
elif DNA == 'GTT' or DNA == 'GTC' or DNA == 'GTA' or DNA == 'GTG':
print 'V'
elif DNA == 'TTT' or DNA == 'TTC':
print 'F'
elif DNA == 'ATG':
print 'M'
else :
print "X"
for i in range(3, len(DNA) + 1, 3):
translate (DNA[i-3:i])
上述输出为:
五 我 F级
所以我希望'PY'按照else语句输出为'X',但它的长度不能被3整除。也希望输出为:VIFX。你知道吗
首先,最好将与一个输出字母相关的所有可能性放入一个列表中,并检查您的
DNA
变量是否是in
这样的列表。只是看起来比较整洁。他说它可能看起来像:
而不是:
如果你想把所有的字母都放在一行中,你可以使用一个变量,简单地给它添加字母,然后在分析完整个DNA代码后打印出来。他说
要在少于3个字母或任何其他组合时打印“X”,最好使用
while
循环。他说例如,您的代码可以如下所示:
这样,您只需给函数提供参数就可以得到结果,不需要外部
for
循环或类似的循环。他说这里有一些东西使事情主要是数据驱动的,这通常是一件好事,因为它使事情更容易调试和维护。他说
因此,最好使用
biopython
http://biopython.org/你得到了
相关问题 更多 >
编程相关推荐