为了账号安全,请及时绑定邮箱和手机立即绑定

如何在找到值后立即跳过字符串搜索到索引?Python

如何在找到值后立即跳过字符串搜索到索引?Python

慕田峪9158850 2021-06-30 13:55:49
我的程序现在有两个功能。get_orf(dna)它需要一个名为 dna 的字符串作为输入。如果字符串以起始密码子“ATG”开头,则以get_orf3 的倍数搜索任何终止密码子。如果找到其中之一,则返回 ORF('ATG' 和直到终止密码子的序列)。orf_List = []stopCodons = ["TAG", "TAA", "TGA"]def get_orf(dna):    #checks to see if the first three amino acids are ATG    if dna[:3] == "ATG":        #if the first three are amino acids,         #it checks the dna string in multiples of 3 uisng the range fucntion        for k in range(0, len(dna), 3):            #checking for stop codons in the dna string            if any(s in dna[k:k+3] for s in stopCodons):                #if a stop codon is found, it returns it                return dna[0:k]        #prints No Orf if there are no stop codons found        else:            print("No ORF.")    #prints No Orf if the dna does not start with ATG    else:        print("No ATG IN BEGINNING.")并且one_frame(dna)采用一个DNA串作为输入。one_frame以三的倍数从左到右搜索该字符串。当它遇到一个起始密码子“ATG”时,它会调用get_orf从该起始密码子开始(直到结束)的字符串片段以返回一个 ORF。该 ORF 被添加到一个 ORF 列表中,然后该函数在DNA 串到我们刚找到的 ORF 之后的点,并开始寻找下一个 ORF。重复这个过程,直到我们遍历了整个 DNA 串。def one_frame(dna):    i = 0    while i < len(dna):        for i in range(0, len(dna), 3):            if "ATG" in dna[i:i+3]:                newOrf = get_orf(dna[i:])                orf_List.append(newOrf)            #i don't know how to skip ahead    print(orf_List)     return(orf_List)当我调用 时one_frame("ATGCCCATGCCCCCCTAG"),我无法弄清楚如何向前跳到找到的 ORF 的最后一个索引,以便我可以继续我的搜索。有什么帮助吗?使用此代码,它会打印出“ATGCCCATGCCCCCCTAG”和“ATGCCCCCCTAG”。较小的不应打印,因为它在较大的内部。
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

我建议您摆脱for循环one_frame并将其实现为while循环(看起来您已经尝试过)。


然后您可以手动控制i值并将找到的 ORF 的长度添加到它以向前跳过。


def one_frame(dna):

    orf_list = []

    i = 0

    while i < len(dna):

        if "ATG" == dna[i:i+3]:

            new_orf = get_orf(dna[i:])

            if new_orf:

                orf_list.append(new_orf)

                i += len(new_orf)

                continue

        i += 3


    print(orf_list)

    return(orf_list)


查看完整回答
反对 回复 2021-07-06
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信