Выполнение элемента списка ничего не возвращает

#python #loops

Вопрос:

Вот мой код:

 def main():  opt = setup()  inst = ''  if opt == 'Y' or opt == 'y':  while not inst == 'end':  instlist = []  inst = input('Enter codeline to execute, when done type "end"')  if not inst == 'end':  instlist.append(inst)  i = 0  instlist  while i lt; len(instlist):  exec(instlist[i])  i = i   1  input()  

Код работает без ошибок, но если я вставлю в него «print («привет, мир»)», он будет полностью пустым, пока я не нажму enter, а затем он завершится. Почему он не печатает то, что я ему сказал?

Комментарии:

1. Здесь несколько проблем: вы инициализируете instlist пустой список на каждой итерации первого цикла, поэтому он никогда ничего не может содержать. Даже если бы это было так, второй цикл не увеличивается i , поэтому он будет выполнять только первый элемент навсегда.

2. Оказывается, когда я скопировал код для переполнения стека, «i = i 1» не было отступа. Я не знаю, почему, и этого нет в коде.

Ответ №1:

Вы должны вывести instlist = [] за пределы цикла до этого времени.Также вы должны поместить i за пределы цикла, а внутри цикла вы должны увеличить.Также вы должны использовать для i в диапазоне (len(inslist)) для вашего второго цикла.

Комментарии:

1. На самом деле это «для меня в диапазоне (len(instlist)):», я был немного смущен, когда вставил это.

Ответ №2:

Это довольно просто. В вашем цикле while not inst == «конец» вы создали переменную instlist. Каждый раз, когда выполняется цикл while, список очищается и становится пустым списком. Попробуйте объявить его прямо под тем местом, где вы объявили переменную inst.