Файл с текстом параграфа

Чтение целых и вещественных чисел из текстового файла. Запись чисел в файл. Построчная обработка данных. Встроенные функции языка программирования для поиска суммы, минимума, максимума. Работа с цифрами числа.
Post Reply
Поляков
Posts: 47
Joined: Wed May 06, 2026 8:29 am

Файл с текстом параграфа

Post by Поляков »

bonzo
Posts: 9
Joined: Wed May 06, 2026 11:08 am

Re: Файл с текстом параграфа

Post by bonzo »

summa и count -- не очень удачный выбор названий. Если уж count, то должно быть sum.

В заданиях появляются вопросы о загрузке всего файла в оперативную память; рассуждения, о которых я писал в предыдущем параграфе, здесь бы как раз помогли (уже будут знать, что так делать нельзя).
nikolay
Posts: 10
Joined: Wed May 06, 2026 8:33 am

Re: Файл с текстом параграфа

Post by nikolay »

Задача б) в повышенной сложности. Строка "минимальную из сумм таких пар" -- опечатка, должно быть троек.
Neket
Posts: 10
Joined: Wed May 06, 2026 11:11 am

Re: Файл с текстом параграфа

Post by Neket »

1. В продолжение предыдущего параграфа, в начале текущего можно было бы упомянуть, что хранение чисел в виде текстового файла -- не единственный способ хранения чисел в файле (и вообще говоря весьма неоптимальный). Для простоты работы мы используем его, но вообще говоря, во взрослых программах, обычно делают по-другому.

2. with снова назван менеджером контекста, что некорректно. Расплывчатая формулировка про "блок операторов, записанные с отступом относительно ключевого слова" мне тоже не очень нравится. Мне кажется? можно честно написать "блок операторов, являющихся частью оператора with". Составные операторы ранее вводились на примере условного оператора, и про отступ там тоже было.

3. И снова я бы не стал рекламировать как более короткую запись for ... in open(...) -- она строго хуже варианта с with, так как нет контроля над тем, когда будет закрыт файл. Если я правильно понимаю, такие конструкции рекомендуется избегать.

4. Задача 2. Меня смущает, что для решения одной и той же проблемы (отсутствие прерыдущего значения) для переменных prev и max_sum используется разный подход (None в первом случае, валидное значение во втором случае). Если просто хочется показать оба приема, мне кажется следует пояснить, какой из них стоит выбирать в какой ситуации и почему. В данной задаче понтяно (хотя и не объясняется), почему None использовать во втором случае не так удобно -- иначе придется делать лишнюю проверку перед вызовом max, однако почему не применить тот же прием, и не присвоить переменной prev заранее такое значение, которое заведомо не пройдет другие условия, не очень понятно (и также не объясняется).
Поляков
Posts: 47
Joined: Wed May 06, 2026 8:29 am

Re: Файл с текстом параграфа

Post by Поляков »

bonzo wrote: Tue Jun 16, 2026 8:29 pm summa и count -- не очень удачный выбор названий. Если уж count, то должно быть sum.
Тогда мы перекроем встроенную функцию sum - это еще хуже.
bonzo wrote: Tue Jun 16, 2026 8:29 pm В заданиях появляются вопросы о загрузке всего файла в оперативную память; рассуждения, о которых я писал в предыдущем параграфе, здесь бы как раз помогли (уже будут знать, что так делать нельзя).
Нужно понимать, когда это можно делать. В задачах ЕГЭ, например, можно.
Поляков
Posts: 47
Joined: Wed May 06, 2026 8:29 am

Re: Файл с текстом параграфа

Post by Поляков »

nikolay wrote: Wed Jun 17, 2026 1:58 pm Задача б) в повышенной сложности. Строка "минимальную из сумм таких пар" -- опечатка, должно быть троек.
Спасибо, поправил.
Поляков
Posts: 47
Joined: Wed May 06, 2026 8:29 am

Re: Файл с текстом параграфа

Post by Поляков »

Neket wrote: Wed Jun 17, 2026 3:33 pm 1. В продолжение предыдущего параграфа, в начале текущего можно было бы упомянуть, что хранение чисел в виде текстового файла -- не единственный способ хранения чисел в файле (и вообще говоря весьма неоптимальный). Для простоты работы мы используем его, но вообще говоря, во взрослых программах, обычно делают по-другому.
Добавлено.
Neket wrote: Wed Jun 17, 2026 3:33 pm 2. with снова назван менеджером контекста, что некорректно. Расплывчатая формулировка про "блок операторов, записанные с отступом относительно ключевого слова" мне тоже не очень нравится. Мне кажется? можно честно написать "блок операторов, являющихся частью оператора with". Составные операторы ранее вводились на примере условного оператора, и про отступ там тоже было.
Исправлено.
Neket wrote: Wed Jun 17, 2026 3:33 pm 3. И снова я бы не стал рекламировать как более короткую запись for ... in open(...) -- она строго хуже варианта с with, так как нет контроля над тем, когда будет закрыт файл. Если я правильно понимаю, такие конструкции рекомендуется избегать.
Хорошо, согласен, заменил везде на with.
Но в школьных задачах такой вариант отлично срабатывает. Хотя для серьезных программ - да, нехороший стиль.
Neket wrote: Wed Jun 17, 2026 3:33 pm 4. Задача 2. Меня смущает, что для решения одной и той же проблемы (отсутствие прерыдущего значения) для переменных prev и max_sum используется разный подход (None в первом случае, валидное значение во втором случае). Если просто хочется показать оба приема, мне кажется следует пояснить, какой из них стоит выбирать в какой ситуации и почему. В данной задаче понтяно (хотя и не объясняется), почему None использовать во втором случае не так удобно -- иначе придется делать лишнюю проверку перед вызовом max, однако почему не применить тот же прием, и не присвоить переменной prev заранее такое значение, которое заведомо не пройдет другие условия, не очень понятно (и также не объясняется).
Мне казалось, что запись в max_sum начального значения, меньшего, чем все возможные реальные значения - это совершенно стандартный приём, на котором не стоит особо заострять внимание. На мой взгляд, для prev не подобрать валидного значения, потому что в условии or, так что если условие abs(n)%7==0 сработает для первого числа в последовательности, то мы посчитаем лишнюю пару.
Почему неудобно в max_sum записывать None, я пояснил в добавленном абзаце.

Спасибо за замечания.
Post Reply

Return to “§ 5. Хранение и обработка чисел”