2017-07-22 7 views
0

私はコンビネーション電卓を作成しています。私が常に解決しようとしている問題は、コード内の無限ループを処理することです。 print(lists)print(combolist)プログラムは動作し続けます - 無限ループ

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) 

私は印刷機能の束を置いてきました。 私はそれを実行すると、リストとコンボリストは常に更新され、印刷されます。その後、期待どおりの印刷を停止しますが、私のプログラムは何かを実行し続けます。それも決して到達しない

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

問題を見つけるために私のコードのロジックに従ったが、私はしなかった。私のコードで何が繰り返しループしていますか?

答えて

0

comboloop = Falseは、あなたのグローバルに呼び出されるcomboloopを陰にするローカル変数を作成しています。あなたはstartingloop()関数で

global comboloop 

を追加する場合、プログラムは

を終了します
関連する問題