← Все вопросы
Как читать строки ввода в цикле, пока не введут пустую строку?
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 месяца назад
Ваш ответ
Войдите, чтобы ответить на вопрос.