Подсчёт и поиск минимума и максимума
Содержание курса
Цикл for по списку мы уже использовали для перебора элементов. Теперь идём дальше: добавляем внутрь цикла логику, которая позволяет не просто читать каждый элемент, а принимать решение — считать его или нет.
Ручной подсчёт элементов по условию: цикл и счётчик
Задача звучит просто: есть список чисел, надо узнать, сколько из них больше нуля. Или сколько строк в списке длиннее пяти символов. Или сколько оценок выше среднего. Во всех этих случаях нужен один и тот же паттерн.
Паттерн состоит из трёх шагов.
Первый — объявить счётчик до цикла и поставить его в ноль:
count = 0
Второй — пройтись по списку циклом for и внутри проверить условие:
scores = [45, 82, 60, 91, 33, 78]
count = 0
for score in scores:
if score >= 70:
count += 1
Третий — после цикла count содержит ответ:
print(count) # 3
Здесь Python проходит по каждому элементу списка scores. На каждом шаге проверяет: score >= 70? Если да — увеличивает счётчик на единицу. Если нет — просто идёт дальше. В итоге в count накапливается количество элементов, прошедших проверку.
Почему count = 0 стоит именно до цикла, а не внутри? Потому что внутри цикла это присваивание выполнялось бы на каждой итерации, сбрасывая счётчик обратно в ноль. Результат всегда был бы 0 или 1 — в зависимости от последнего элемента.
Подсчёт можно усложнить без изменения структуры. Например, посчитать элементы, которые делятся на три:
numbers = [12, 7, 9, 4, 21, 5, 18]
count = 0
for n in numbers:
if n % 3 == 0:
count += 1
print(count) # 4 (12, 9, 21, 18)
Или отфильтровать по двум условиям сразу — например, числа в диапазоне от 10 до 20:
count = 0
for n in numbers:
if 10 <= n <= 20:
count += 1
print(count) # 2 (12, 18)
Структура всегда одна: инициализация → цикл → условие → инкремент. Условие можно менять как угодно, скелет остаётся тем же.
Этот паттерн важен не как временный костыль, а как алгоритмическое мышление: нужно понимать, что именно происходит в памяти на каждом шаге цикла, прежде чем переходить к более коротким записям.
