Почему и как работает многострочный ввод в Python

Прежде чем сообщить мне о дубликатах, позвольте мне связать похожие темы, в которых говорится, как писать код, но не говорите, как он работает:

Теперь код для чтения нескольких строк:

'''
input data:
line 1
line 2
line 3
'''

line_holder = []

while True:
    line = input("\nPlease paste here lines :\n")
    if line:
        line_holder.append(line)
    else:
        break
for line in line_holder:
    print(line)

Как я это понимаю

  • цикл будет повторяться до тех пор, пока оператор "break"
  • на входе мы вставляем несколько строк, которые хранятся в какой-то очереди
  • если во входной очереди есть что-то для работы
  • добавить первое значение из этой очереди в список
  • если нет ничего, убить цикл с помощью "break"
  • наконец, выведите то, что мы добавили из очереди в список

Так что, если есть очередь входов, как еще я могу добраться до нее? Как он хранится на компьютере и зачем мне нужен список, чтобы его увидеть?

2 ответа

Решение

So if there is a queue of inputs, how else can I reach it?
Как написано, ваш цикл не имеет доступа к очереди - input принимает данные от stdin... обычно данные вводятся с клавиатуры пользователем.

How is it stored on the computer ...?
Предположим, вы ссылаетесь на несуществующую очередь (см. Выше), но при добавлении line к списку, вы сохраняете эту строку в списке.

... and why do I need to build list, to see it?
Вы не можете - вы можете просто напечатать строку, чтобы увидеть ее, но если вы хотите использовать эти данные позже, вам нужно поместить их в какой-то контейнер, и список удобен.

Вот краткое изложение всего этого Первая строка (начиная с line_holder = []) объявляет line_holder как массив, когда вам нужно добавить строки.

Тогда while while делает его бесконечным циклом (если не указано иное внутри цикла)

Внутри цикла находится вход, который назначается переменной 'line'

Затем он проверяет, есть ли в строке что-либо (если строка), если это так, он добавляет содержимое строки в массив, который уже был объявлен как line_holder.

Однако, если в строке (else) ничего нет, тогда он прерывает цикл, который затем запускает цикл for, являющийся строкой для line_holder, который просто присваивает первую, затем вторую и т. Д. Строку переменной строке, а затем печатает ее, пока У line_holder нет мест в нем.

Надеюсь, что это прояснилось для вас, любые вопросы просто добавьте комментарий.

Другие вопросы по тегам