2017-07-22 5 views
0

Ich habe einen Kombinationsrechner erstellt, etwas, das mir schwer fällt. Ein Problem, das ich ständig zu beheben versuche, ist der Umgang mit Endlosschleifen in meinem Code.Programm läuft weiter - Endlosschleife

oglist = ["a","b","c","d"] 
combocounter = 3 
lists = {} 
comboloop = True 
combolist = ["lol"] 
pendinglist = ["lol"] 
for x in range(0, combocounter): 
    lists["list" + str(x)] = ["lol"] 
def loop(counter1): 
    global recursion1 
    global recursion2 
    if len(lists["list" + str(counter1)]) == 0: 
     lists["list" + str(counter1 - 1)] = lists["list" + str(counter1 - 1)][1:] 
     print(lists) 
     recursion1 = True 
     recursion2 = True 
    else: 
     lists["list" + str(counter1 + 1)] = lists["list" + str(counter1)][1:] 
     print(lists) 
     recursion2 = False 
    return 
def startingloop(): 
    global recursion1 
    if len(lists["list0"]) == 0: 
     comboloop = False 
    else: 
     lists["list1"] = lists["list0"][1:] 
     print(lists) 
     recursion1 = False 
    return 
def endingloop(): 
    global counter2 
    global recursion2 
    if len(lists["list2"]) == 0: 
     lists["list1"] = lists["list1"][1:] 
     print(lists) 
     recursion2 = True 
    else: 
     combolist[counter2] = lists["list0"][0] 
     for y in range(1, combocounter): 
      combolist[counter2] = combolist[counter2] + lists["list" + str(y)][0] 
     combolist.append("lol") 
     lists["list2"] = lists["list2"][1:] 
     counter2 += 1 
     print(lists) 
     print(combolist) 
    return 
lists["list0"] = oglist 
counter2 = 0 
while comboloop == True: 
    startingloop() 
    while recursion1 == False: 
     loop(1) 
     while recursion2 == False: 
      endingloop() 
combolist.remove("lol") 
print(combolist) 

Ich habe eine Reihe von Druckfunktionen gelegt: print(lists) und print(combolist). Wenn ich es ausführe, werden Listen und Combolist ständig aktualisiert und gedruckt. Es hört dann auf zu drucken, was erwartet wird, aber mein Programm läuft weiter. Es ist auch nie erreicht

combolist.remove("lol") 
print(combolist) 

ich durch die Anstrengungen der nach der Logik meines Codes gingen alle Probleme zu finden, aber ich tat es nicht. Was gibt es in meinem Code?

Antwort

0

comboloop = False erstellt eine lokale Variable, die Ihr globales comboloop schattiert. Wenn Sie

global comboloop 

in Ihrem startingloop() Funktion hinzufügen, verlässt das Programm