2015-09-29 76 views
-2

在我的代碼中,我有一個循環結束的錯誤。我已經構建這個程序來使用函數從外部文件運行命令。在函數「end」中,我做了一個名爲「end_command」的變量,它應該結束循環。Python - 循環未結束

#command list 
master_list = ['commands_list_1'] 
commands_list_1 = ['end'] 
#var 
c_l_i = "start_up" 
end_command = True 
inList = [[] for _ in range(len(master_list))] 
userName = "Alex" 

#functions 
def end(): 
    end_command = False 
    return 0; 

def find_in (key): 
    eval(key+'()') 
    return 0; 

#code 
while (True == end_command): 
    c_l_i = input("<-: " + userName + " :->") 
    counter_c = 0 
    for mlist in master_list: 
     if (c_l_i in eval (mlist)): 
      inList[counter_c] = "true" 
      #find_in(c_l_i) 
     else: 
      inList[counter_c] = "false" 
     counter_c += 1 
    if ('true' in inList): 
     find_in(c_l_i) 
    else: 
     print ('command not found') 
+0

請不要在任何兩行代碼之間添加空白行。它使得代碼的可讀性降低,並且在比需要更多的空間上傳播。 – alfasin

+1

我會推薦使用'while(True)'和'break',而不是使用自定義函數。 –

回答

2

end()功能設置一個名爲end_command一個局部變量,而不是全局變量。你需要一個global聲明:

def end(): 
    global end_command 
    end_command = False 
    return 0 

BTW,使用eval與用戶輸入的設計極差。