← Все вопросы

КЕГЭ: при чтении файла построчно input() не работает — как правильно?

Задан 18 месяцев назад525 просмотров4 ответа
14

На КЕГЭ к заданиям типа 24 даётся текстовый файл. Дома пробую читать его через input() в цикле, но ловлю ошибку или пустоту. В чём подвох и как правильно читать файл в задачах ЕГЭ?

4 ответа

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

input() читает из стандартного ввода (клавиатуры/stdin), а не из файла. Чтобы читать файл, открывай его через open и не забывай убирать перевод строки.

with open('24.txt') as f:
    s = f.read().strip()        # всё содержимое одной строкой

# или построчно:
with open('24.txt') as f:
    for line in f:
        line = line.strip()     # ВАЖНО: убрать '\n' и пробелы по краям
        ...

Главная ловушка после перехода с input(): каждая строка из файла приходит с \n на конце, поэтому почти всегда нужен .strip() (или .rstrip('\n')). Если в задании одна длинная строка символов — берёшь f.read().strip() и работаешь с ней как с обычной строкой. input() оставь для заданий, где данные реально вводятся вручную.

Nazar Skaletskiy Можно ещё через sys.stdin перенаправить файл, но open проще и нагляднее · 17 месяцев назад
Анна Королёва Забытый strip() — причина 90% «не сходится ответ» в 24-м · 17 месяцев назад
10

input() читает с клавиатуры, не из файла. Используй open('file.txt') и .read() или цикл по строкам с .strip().

6

Читал файл, забыл strip и сравнивал строку с '\n' на конце — час искал баг. Всегда .strip()!

Виктор Жуков классика, проходили все · 17 месяцев назад
5

Открывай файл через open, а не input.

Ваш ответ

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