【发布时间】:2016-10-13 20:24:13
【问题描述】:
我正在尝试创建一个从 dna 序列文件中读取酶切片段的简单程序。我的问题是我无法让第一个块在循环中重复。我在做什么错所以我可以把它变成一个循环?非常感谢任何帮助,谢谢!
sequence = open('sequence.txt').read().replace('\n','')
enzymes = {}
fh = open('enzymes.txt')
print('Restriction Enzyme Counter')
inez = input('Enter a Restricting Enzyme: ')
def servx():
for line in fh.readlines():
(name, site, junk, junk) = line.split()
enzymes[name] = site
if inez in line:
xcr = site
print('Active Bases:', site)
for line in sequence.split():
if xcr in line:
bs = (sequence.count(xcr))
print('Enzyme', inez, 'appears', bs, 'times in Sequence.')
servx()
inez = input('Find another Enzyme? [Yes/No]:')
if inez is 'Yes':
servx()
fh.close()
【问题讨论】:
-
你怎么知道你的循环没有运行?
-
如果你把你的函数放在顶部,然后在代码运行时放置几个空行,通常会更易读。
-
请注意,您调用了您的
servx函数两次,但第二次调用它时,fh文件句柄已经耗尽,因此循环不会运行。这是问题吗?不过,第一次调用它应该运行良好。 -
它确实不跳过循环,否则您将不会得到“Enzyme AarI 在序列中出现 12 次”输出。它只是在您第二次调用该函数时跳过循环,正如我所说的,因为文件迭代器已经用尽了。寻找重复关闭。
-
即使进行了更正,这也是非常低效的。您应该查看字典并在重复循环之前一步完成所有预处理。即便如此,它也只会额外运行一次。
标签: python