ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Счетчики и фильтры в Python: как считать подходящие элементы

Автор: · Обновлено

Счётчик хранит количество событий, а фильтр определяет, какие элементы считаются подходящими. Переменная count начинается с нуля и увеличивается только внутри условной ветки. В отличие от накопителя суммы, к ней прибавляют единицу, а не само значение.

Подсчёт положительных чисел

numbers = [-3, 0, 5, 8, -1, 2]
count = 0

for number in numbers:
    if number > 0:
        count += 1

print('Положительных:', count)

Ожидаемый вывод:

Положительных: 3

Подходят 5, 8 и 2. Ноль не является положительным, потому что условие строгое. Если требуется считать неотрицательные числа, оператор меняется на >=.

Отступ определяет смысл

При count += 1 вне if счётчик увеличится для каждого элемента и станет равен длине списка. При инициализации внутри for он будет обнуляться. Проверьте вертикальное расположение строк перед поиском сложной ошибки.

Иногда одновременно нужны количество и сумма подходящих элементов. Используйте две переменные и обновляйте обе в одной ветке. Не вычисляйте среднее как total / count без проверки count > 0: если подходящих элементов нет, возникнет ZeroDivisionError.

Два фильтра для одной строки

Прочитайте строку и посчитайте отдельно количество цифр и количество пробелов, перебирая символы. Методы char.isdigit() и сравнение char == ' ' дают логические условия. Проверьте текст «Дом 12, этаж 3»: цифр 3, пробелов 3. Затем испытайте пустую строку. Для самопроверки временно печатайте символ только в той ветке, где счётчик меняется.

Проверка фильтра

Создайте список от -3 до 3 и для каждого элемента выведите две логические метки: положительный ли он и чётный ли. Затем посчитайте элементы, удовлетворяющие обоим условиям, и отдельно — хотя бы одному. До запуска предскажите два количества. Переставьте count += 1 на разные уровни отступа и используйте тест, чтобы увидеть изменение. Добавьте второй счётчик для отброшенных значений и проверьте равенство accepted + rejected == len(values). Такая контрольная сумма обнаруживает пропущенный путь и делает работу фильтра наблюдаемой.

Практикум: счётчики по нескольким признакам

Для последовательности чисел посчитайте положительные, чётные и одновременно положительные чётные. Используйте три отдельных счётчика и проверьте -2, -1, 0, 1, 2. До запуска заполните ожидаемую таблицу принадлежности. Обратите внимание: одно число может увеличить несколько счётчиков, поэтому здесь нужны независимые if, а не обязательно elif. Затем посчитайте долю подходящих среди всех элементов, обработав пустой список. Условие фильтра вынесите в именованную переменную для проверки.

Контрольная точка

Почему ноль увеличивает счётчик чётных, но не положительных? Вычислите оба признака независимо и объясните разницу между объединением and и отдельными категориями.

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

Счётчик и накопитель — одно и то же?

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

Источники