python - 如何让内循环考虑外循环的每次迭代?
问题描述
由 组成的三字母集'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 - 缺少 1 个必需的位置参数错误,不确定这个
- python - 如何在 PyGame 中制作交互式按钮
- c++ - 将继承的实例插入到同一个类的实例中
- reactjs - Django + React 我需要有关表单渲染和身份验证用户的建议
- python - 使用 for 循环打印给定的模式
- stata - 从 Stata 本地创建一个变量
- node.js - 是否可以使用 i18n 执行“player1、player2、[...] 和 playerX”?
- angular - 通过子组件引用覆盖相同属性后无法更改输入属性 - @ViewChild()
- python - TypeError: datetime.date(2021, 1, 1) is not a string and ConversionError: Failed to convert value(s) to axis units: numpy.datetime64('2021')
- linux - 用于将文件从服务器复制到另一台服务器的每月脚本(如果存在)