2015-09-29 2 views
-2

В моем коде у меня ошибка с концом цикла. Я создал эту программу для запуска команд из внешнего файла с помощью функций. В функции «end» я создал переменную, называемую «end_command», которая должна завершить цикл.Python - Loop not заканчивается

#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 с пользовательским вводом является очень плохим дизайном.