为什么我不能创建一个简单的循环?

时间:2016-10-13 20:24:14

标签: python

我正在尝试创建一个简单的程序,从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()

2 个答案:

答案 0 :(得分:0)

你可能做不到你认为的事情:

received: (data) ->
                if user_id == data.user_id
                    $('#messages').append "<div class='current-user msg'>" + data.text + "</div>"
                else
                    $('#messages').append "<div class='other-user msg'>" + data.text + "</div>"
                $('#message_text').val('')
                messages_to_bottom()

for line in fh.readlines(): 读取整个文件并返回它读取的内容。所以当你这样做时,循环中的行变量不仅仅是文件的一行,它一次就是整个文件。所以你的for循环只运行一次,因为在第一个循环之后没有别的东西在文件中迭代,因为你读到了文件结束。基本上你确实从文件中读了一行,但你一次性地耗尽了整个文件。

我认为您想要做的是一次读一行直到文件结束:

.readlines()

或者一起阅读文件的更好方法是:

for line in fh:

最后一种方法并不要求with open('filename.txt') as fh: for line in fh: print(line) 为您处理的文件。fh.close()。但请注意最后一种方法如何使用for line in fh:

答案 1 :(得分:0)

以下问题在您的代码中会阻止您的函数servx()多次运行:

if inez is 'Yes':

这将检查inez是否与文字字符串'Yes'的实例相同。对于所有意图和目的,这将始终返回false。你想要的是这个:

if inez == 'Yes'

根据这个问题,检查字符串是否匹配,而不是对象实例本身:Why does comparing strings in Python using either '==' or 'is' sometimes produce a different result?