2016-10-14 8 views
0

私はまだ2番目の 'for'変数をリンクするのに苦労しています。最初の 'for'ループは正常に動作しますが、後半は1つの変数にスタックされています。これは後で繰り返されるループで正しく機能することができません。どのようにしてこれを書いて、テキストの関数がグローバルなので、変数 'xcr'はローカルではありません。私は初心者だとわかっていますが、どんな助けでもいつも感謝しています!!ありがとう!予想される出力にエラーがあります:ループが正常に動作していません

sequence = open('sequence.txt').read().replace('\n','') 
enzymes = {} 
fh = open('enzymes.txt') 
print('Restriction Enzyme Counter') 
def servx(): 
    inez = input('Enter a Restricting Enzyme: ') 
    for line in fh.readlines(): 
     (name, site, junk, junk) = line.split() 
     enzymes[name] = site 
     global xcr 
     xcr = site 
     if inez in line: 
      print(xcr) 
      print('Active Bases:', xcr) 
    for lines in sequence.split(): 
     if xcr in lines: 
      bs = (sequence.count(xcr)) 
      print(bs) 
      print('Enzyme', inez, 'appears', bs, 'times in Sequence.') 
+0

どちらのループですか? – martineau

+0

はい、確かに。この正確なコードは数時間前に問題になりました。今では最初のデフが後半を生成しない理由と、後半を生成しないことが疑問視されています。 – Joker

+0

ループの問題をデバッグする1つの方法は、ループ内にprintステートメントを置くことです。ループが失敗する前に変数にどのような値があるかを見ることができます。 –

答えて

0

私はservxにパラメータとしてINEZを渡すことであろうあなたがservy関数の内部ではなく外部のグローバル指定する必要があると思いますが、さらに良い:

def servy(): 
    global inez 
    fh.seek(0); #veryyyyy important 
    qust = input('Find another Enzyme? [Yes/No]: ') 
    qust = qust.lower() 
    if qust == 'yes': 
     inez = input('Enter a Restricting Enzyme: ') 
     servx() 
     servy() 
    elif qust == 'no': 
     print('Thanks!') 
    elif qust not in ('yes', 'no'): 
     print('Error, Unknown Command') 

それとも

def servx(inez): 
    . . . 



def servy(): 
    fh.seek(0); #veryyyyy important 
    qust = input('Find another Enzyme? [Yes/No]: ') 
    quest = qust.lower() 
    if qust == 'yes': 
     inez = input('Enter a Restricting Enzyme: ') 
     servx(inez) 
     servy() 
    elif qust == 'no': 
     print('Thanks!') 
    elif qust not in ('yes', 'no'): 
     print('Error, Unknown Command') 
関連する問題