Файл ods
Файл к задаче приходит в формате .ods - это родной формат LibreOffice Calc, той самой программы, что стоит на станции КЕГЭ.
А вот Питон такой файл сам не прочитает. Внутри .ods не текст, а архив с разметкой: переименуй его в .zip и загляни — увидишь content.xml и ещё несколько файлов. Чтобы читать это напрямую, нужна отдельная библиотека, и возиться с ней на экзамене не получится (у вас достыпны только стандартные библиотеки), да и незачем.
Поэтому первым делом таблицу переводят в csv — «таблицу текстом». Полминуты:
- Открой
.ods двойным щелчком — запустится LibreOffice Calc.
- Файл → Сохранить как…
- В списке типов выбери Текст CSV (.csv).
- Поставь галочку «Изменить настройки фильтра» и нажми «Сохранить». На вопрос о формате отвечай «Использовать формат CSV».
- В окне экспорта: кодировка Юникод (UTF-8), разделитель поля — точка с запятой, разделитель текста оставь пустым.
- Сохрани рядом с программой — тогда в коде хватит голого имени файла без всяких путей.
Готово: получился обычный текстовый файл, его открывает даже блокнот. Одна строка таблицы - одна строка текста, числа через точку с запятой (открой этот файл в блокноте и проверь разделитель). Ровно то, что ты видел во фрагменте выше.
Почему точка с запятой, а не запятая. В русской раскладке запятая — десятичный разделитель: 3,14. Пока числа целые, разницы нет. Но появятся дробные — и файл с запятыми развалится: программа увидит в 3,14 два числа вместо одного. С точкой с запятой такого не случится, поэтому её и берут по умолчанию.
Почему вообще через csv
- Читается тремя строками и без единой библиотеки - заработает где угодно.
- Видно глазами. Открыл блокнотом - и сразу понятно, что не так: не тот разделитель, лишняя шапка, пустая строка.
- Ничего не ломается при переносе. Текст есть текст.
Три мелочи, на которых спотыкаются
- Выбрал при экспорте запятую - значит и в программе
line.split(","). Разделитель обязан совпадать.
- В файлах задания 9 шапки нет, только числа. Если шапка вдруг есть, первую строку надо пропустить, иначе
int споткнётся о текст.
- Лишние пробелы и перевод строки убирать не надо:
int(" 7\n") отработает как надо.
В старых сборниках и в банке задач те же задачи лежат как .xls. Шаги ровно те же, меняется только программа, в которой открываешь.