← Все вопросы

Как читать строки ввода в цикле, пока не введут пустую строку?

Задан 2 месяца назад446 просмотров2 ответа
12

Нужно считывать строки от пользователя одну за другой, а как только он нажмёт Enter на пустой строке — остановиться. Сколько строк будет — заранее неизвестно.

2 ответа

17
✓ Принятый ответ — помог автору

Классический while True + break:

lines = []
while True:
    s = input()
    if s == "":
        break
    lines.append(s)

print(lines)

Цикл крутится бесконечно, но как только input() вернул пустую строку — break выходит. Так делают, когда количество итераций заранее неизвестно. Если ввод идёт из файла/потока и пустая строка не гарантирована, лучше ловить конец ввода через try/except EOFError.

8

Чуть короче через «морж»:

lines = []
while (s := input()) != "":
    lines.append(s)

Оператор := присваивает и сразу проверяет в условии. Питон 3.8+.

Никита Лазарёнок Красиво, но новичку while True + break нагляднее · 2 месяца назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект