← Все вопросы

EOFError: EOF when reading a line при input() — что значит и почему?

Задан 32 месяца назад230 просмотров1 ответ
7

Программа с input() запускается на сайте/в онлайн-тренажёре и сразу падает с EOFError: EOF when reading a line. Локально всё работает! Что значит EOFError при input и как это исправить?

1 ответ

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

EOFError: EOF when reading a line значит: input() попытался прочитать строку, а ввода больше нет (EOF — «конец файла/потока ввода»). Программа ждёт данные, но их неоткуда взять.

Главные причины:

  1. Вызвали input() больше раз, чем подали строк. Частая ситуация в онлайн-тренажёрах и при автоматической проверке: на вход подали, скажем, 2 строки, а в коде три input() — третий падает с EOFError.
a = input()
b = input()
c = input()   # если подали только 2 строки — EOFError
  1. Среда вообще не передаёт ввод. Некоторые онлайн-песочницы и ноутбуки не поддерживают интерактивный input() — поток ввода пуст, и первый же input() даёт EOFError.

  2. Запустили скрипт с перенаправленным пустым файлом: python prog.py < empty.txt.

Что делать:

  • Сверьте число input() с числом строк во входных данных задачи.
  • Если хотите читать «сколько дадут», обработайте конец ввода:
try:
    line = input()
except EOFError:
    line = ""   # ввод закончился
  • Для чтения всех строк до конца удобно: import sys; data = sys.stdin.read().

Если локально всё ок, а в проверяющей системе EOFError — почти всегда дело в лишнем input() или в неверном формате входных данных.

Ваш ответ

, чтобы ответить на вопрос.