python - 如何使内循环考虑外循环的每次迭代?

标签 python loops for-loop bioinformatics

三字母组,由 'A', 'U', 'G' or 'C' 组成,被定义为密码子。每个密码子对应 20 个字母中的一个。这些字母(氨基酸)的集合被定义为蛋白质。文件“codons.txt”包含密码子和相应的字母。

接下来的问题是:内部 for 循环仅工作一次 - 它仅将 txt 文件中的行与第一个密码子进行比较。然后,据我了解,该方法会跳过内部循环。

代码:

path = r'C:\Users\...\codons.txt'
f = open(path, 'r')

def prot(DNA):
    protein = ''
    a = True
    for i in range (0, len(DNA)-2,3):
        codon = DNA[i:i+3:1]
        print(codon)
        for line in f:
            if line[0:3:1] == codon:
                protein += line[4:5:1]
                print(protein)
    return protein


prot('AGUCAGGAUAGUCUUA')

输出:

 AGU
 S
 CAG
 GAU
 AGU
 CUU

接下来的问题是:如何使内循环对每个密码子起作用?

最佳答案

迭代文件时(for line in f:),到达文件末尾时停止。

您可以:

  • 使用 f.seek(0) 将文件读取器位置重置为文件开头
  • 或更改循环的顺序,以便仅在文件上迭代一次。

    def prot(DNA):
        protein = ''
    
        with open(path, 'r') as f:
            for line in f:
                for i in range (0, len(DNA)-2,3):
                    codon = DNA[i:i+3:1]
                    print(codon)
    
                        if line[0:3:1] == codon:
                            protein += line[4:5:1]
                            print(protein)
    
        return protein
    

关于python - 如何使内循环考虑外循环的每次迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52708618/

相关文章:

c++ - 对于字符串中的每个字符

python - 使用 MySQLdb 从 Python 中的 MySQL 存储过程获取返回值

python - 导入 nltk 时反复出现的问题

python - 你知道任何用于语法高亮显示的 python 组件吗?

python - 列表理解中的嵌套循环

javascript - 如何显示停止循环的提示中的条目

Python 等价于 Haskell 的 [1..](索引列表)

windows - 带变量的嵌套 FOR

python - 为什么变量在循环中调用后会发生变化?

Python3 使用 Smtplib 发送电子邮件 [Yandex]