2016-10-14 2 views
0

Ich kämpfe immer noch, um die zweite 'für' Variable in diesem zusammen zu verknüpfen. Die erste "for" -Schleife funktioniert korrekt, aber die zweite Hälfte bleibt auf einer einzelnen Variablen hängen, die es nicht erlaubt, in einer späteren wiederholbaren Schleife korrekt zu funktionieren. Wie könnte ich das besser schreiben, so dass die Funktionen des Textes global sind, so dass die Variable 'xcr' nicht lokal ist. Ich weiß, ich bin ein Anfänger, aber jede Hilfe wird immer geschätzt !! Vielen Dank!Fehler in der erwarteten Ausgabe: Schleife funktioniert nicht richtig

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

Welcher Loop, beides? – martineau

+0

Ja, tatsächlich. Dieser genaue Code hat vor ein paar Stunden funktioniert, jetzt wundere ich mich, warum das erste Def nicht die zweite Hälfte, das zweite "für" produzieren wird. – Joker

+0

Eine Möglichkeit zum Debuggen von Schleifenproblemen besteht darin, Druckanweisungen in die Schleife einzufügen, damit Sie sehen können, welche Werte die Variablen haben, bevor die Schleife fehlschlägt. –

Antwort

0

Ich glaube, Sie global in der servy Funktion angeben müssen und nicht außerhalb, aber noch besser wäre inez als Parameter an servx weitergeben müssen:

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') 

Oder

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') 
Verwandte Themen