我正在Python 3中学习一个编码类,我需要帮助找出我的代码有什么问题。基本上,我所做的是取一个mRNA序列,并剪接出序列中的外显子。我给函数一个序列和外显子的位置,然后它必须将它们拼接出来并返回mRNA的字符串。作业的重点是我们不应该使用列表理解、拆分或连接方法。以下是我到目前为止所拥有的:
def splice(seq, exons):
newseq = ""
i = 0
for x in exons:
while i < len(seq):
if i == x[0]:
i += (x[1] - x[0])
else:
newseq += seq[i]
i = i + 1
return newseq与现在一样,我的代码返回的mRNA序列中只有第一个外显子拼接出来,而没有外显子位置列表中的任何其他外显子。如下所示:
>> splice("AAACCCTTTTGGGTTTAA", [(3,6), (10,16)])
'AAATTTTGGGTTTAA'它应该返回这个(对于我的例子):'AAATTTTAA‘
有人对如何使这项工作有任何建议吗?谢谢!(提醒我这学期以前除了一点Java之外,我从来没有编码过,所以请不要对我太挑剔。)
发布于 2016-04-09 18:43:23
试试这个:
def splice(seq, exons):
newseq = ""
next = 0
for x, y in exons:
newseq += seq[next:x]
next = y
newseq += seq[next:]
return newseq和测试:
>>> splice("AAACCCTTTTGGGTTTAA", [(3,6), (10,16)])
'AAATTTTAA'发布于 2016-04-09 18:48:19
我不知道你是否需要时间循环。下面是一个只使用for循环的版本:
def splice(seq, exons):
newseq = ""
i = 0
n = 0
for x in exons:
newseq = seq[i:x[0]-n]+seq[x[1]-n:]
seq = newseq
n = x[1]-x[0]
i = x[0] - n
return newseq
splice("AAACCCTTTTGGGTTTAA", [(3,6), (10,16)])https://stackoverflow.com/questions/36520951
复制相似问题