我试图通过删除出现在两个单词之间的片段来将字符串分开。你知道吗
示例:
AGCGUGUGAGAGCUCCGA
我将删除发生在:GUGU和AGAG之间的部分
因此,新字符串将是:
AGCCUCCGA
我编写了一个代码,利用while循环不断地“拼接”字符串,直到它在字符串中找不到GUGU和AGAG。大多数时候,这个过程都是有效的。你知道吗
我遇到了一个例子,输入非常长,然后我的代码被困在一个无限循环中,我不明白为什么会这样。你知道吗
我希望有人能回顾一下,帮助我改进我正在做的事情。你知道吗
def splice(strand):
while True:
initial = strand.find('GUGU')
final = strand.find('AGAG')
if initial == -1:
break
if final == -1:
break
strand = strand[:initial] + strand[final+4:]
return strand
if __name__ == "__main__":
strand = input("Input strand: ")
print()
spliced = splice(strand)
print("Output is {}".format(spliced))
失败的情况是:
GUGUAGAGGUCACAGUGUAAAAGCUCUAGAGCAGACAGAUGUAGAGGUGUUGUGUAACCCGUAGAGCAAAGGCAACAGUGUGUAAAGAGGUGUAAAGAG
预期结果:
GUCACACAGACAGAUGUAGAGCAAAGGCAACA
我没有遇到任何其他情况下的代码将无法工作。你知道吗
如果
AGAG
正好在GUGU
之前,您的代码就不能工作。在对该输入进行第一次迭代之后,strand
的值是那么
initial
就是21
,final
就是17
,所以你要:它只是将
strand
设置回相同的值,所以您会陷入循环中。你知道吗string.find()
方法有一个可选的start
参数,因此您可以告诉它在initial
之后开始寻找AGAG
:您还可以使用regexp替换来完成整个过程:
相关问题 更多 >
编程相关推荐