В КУРСЕ?

Разбираемся в теме

Python для экзамена: почему правильная формула даёт неверное количество?

В учебных задачах на Python проблема часто скрывается не в сложной формуле, а в порядке действий. Счётчик обнуляется внутри цикла, граница понимается неверно или вместо количества считается сумма. Разберём задачу, полезную при подготовке к школьной информатике: определить число положительных элементов последовательности, которые делятся на три. Это самостоятельный пример, а не воспроизведение экзаменационного задания.

Сначала определите, что именно считается

Для каждого числа должны одновременно выполняться два условия: оно больше нуля и остаток от деления на три равен нулю. В Python остаток вычисляет оператор %. Для соединения требований используют and. Если поставить or, в ответ попадут числа, удовлетворяющие хотя бы одному требованию, и задача изменится. Ноль делится на три без остатка, но не является положительным. Отрицательное число, кратное трём, тоже нужно исключить. Проверка этих случаев помогает понять смысл условия раньше записи цикла.

Счётчик хранит результат просмотренной части

До обработки чисел счётчик равен нулю. Затем очередное число проверяется, и при выполнении условия к счётчику прибавляется единица. После каждого шага он показывает количество подходящих элементов среди уже просмотренных. Это полезное правило для проверки алгоритма. Если обнулять счётчик на каждом повторении, предыдущие находки исчезнут. Если прибавлять само число, получится сумма подходящих значений. Переменные лучше называть по назначению, чтобы количество не путалось с текущим элементом и суммой.

Проследите изменение по шагам

Возьмём последовательность из семи чисел: 6, минус 3, 0, 7, 9, 12, 2. После каждого элемента счётчик принимает значения 1, 1, 1, 1, 2, 3, 3. Ответ равен трём: подходят 6, 9 и 12. Полезно записать рядом причину отказа для остальных чисел. У семёрки не подходит делимость, у минус трёх знак, у нуля строгое сравнение с нулём. Такая трассировка проверяет не только итог, но и то, почему каждый переход верен.

Количество элементов и последнее значение

Цикл for может перебирать сами элементы готового списка. Если требуется выполнить действие ровно n раз, используют range(n): при положительном n он даёт значения от нуля до n минус одного. Правая граница не включается. Не путайте номер повторения с обрабатываемым числом. Формат входных данных тоже важен: заранее известное количество элементов и специальное завершающее значение требуют разных решений. В нашем примере рассматривается готовая последовательность; признак конца в неё не добавляется. Ответ выводят после завершения подсчёта, если нужно одно итоговое число.

Попробуйте на практике

Проверьте условие и счётчик на бумаге, затем при наличии Python сопоставьте с результатом своей реализации.

  1. Перепишите семь чисел из примера и заранее укажите ожидаемый ответ: три.
  2. Для каждого заполните два признака: положительное ли число и делится ли оно на три.
  3. Добавьте столбец счётчика после обработки элемента, начиная с нуля до первого шага.
  4. Проверьте отдельные последовательности: только 0; только минус 6; только 3; числа 1 и 2.
  5. Придумайте ошибочный вариант с or и объясните, какие лишние значения он посчитает в основном примере.

Как проверить результат. Основной ответ равен трём, дополнительные ответы соответственно ноль, ноль, один и ноль. Вы объясняете каждое увеличение счётчика и знаете, почему or меняет условие.

Частые вопросы

Что делать, если подходящих чисел нет?

Оставить счётчик равным нулю. Отдельное искусственное значение для отсутствия совпадений в задаче подсчёта не требуется.

Достаточно ли одного удачного примера?

Нет. Проверьте отсутствие совпадений, один элемент, ноль, отрицательные значения и несколько подходящих элементов подряд. Эти случаи выявляют разные ошибки.

Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.

Зарегистрируйтесь, чтобы уточнить возможность доступа к этому материалу

Зарегистрироваться
← К списку материалов