РАЗБИРАЕМ ПО ШАГАМ
От идеи к работающему коду
Один проход по списку позволяет собрать полезную статистику. Сначала найдём сумму, количество и максимум вручную, затем сравним алгоритм со встроенными sum, min и max.
Сразу к запуску примера ↓
- 1Перебор элементов
- 2Накопление статистики
- 3Обработка пустого набора
1. Значения вместо индексов
В for value in values переменная value получает сам элемент списка. Индекс не нужен, если требуется только прочитать число и выполнить расчёт.
Создай total до цикла и прибавляй каждое значение. Среднее — сумма, делённая на количество элементов. Деление имеет смысл только для непустого списка.
values = [3, 5, 2, 6]total = 0for value in values: total += valueprint("Сумма:", total)print("Среднее:", total / len(values))2. Максимум без сортировки
Начальное значение максимума берём из первого элемента. Затем заменяем его, когда встречаем большее число. Сортировать весь список ради одного максимума не требуется.
Начинать с 0 опасно: для [-7, -2] программа ошибочно оставит 0, которого нет в данных. Инициализация первым элементом работает и для отрицательных чисел; пустой список обрабатываем отдельно.
values = [-7, -2, -9]if values: best = values[0] for value in values: if value > best: best = value print(best)else: print("Нет данных")3. Количество по условию
Счётчик увеличивается только для подходящих значений. Условие value > 0 исключает и отрицательные числа, и ноль. Если нужно «неотрицательные», условие будет другим: value >= 0.
Проверь набор без подходящих значений: результат должен быть 0. Пустой список также даёт 0, потому что тело цикла не выполняется.
values = [0, 4, -2, 7]count = 0for value in values: if value > 0: count += 1print(count)4. Встроенные функции и пустой список
sum, min и max делают знакомые вычисления готовыми средствами. Важно понимать договорённость для пустых данных: sum([]) возвращает 0, а min([]) и max([]) без default вызовут ошибку.
У среднего нет значения при нулевом количестве измерений. Вместо выдуманного результата лучше сообщить «Нет данных». Сначала проверь данные, потом выполняй деление.
values = [3, 5, 2, 6]if values: print("Минимум:", min(values)) print("Максимум:", max(values)) print("Среднее:", sum(values) / len(values))else: print("Нет данных")Где легко ошибиться
- Начать максимум с 0 для произвольных чисел.
- Делить на len(values), не проверив пустой список.
- Путать количество подходящих значений с их суммой.
Проверь понимание: Почему best = 0 не подходит для поиска максимума в [-5, -3]?
Алгоритм оставит 0, хотя правильный максимум -3. Нужно начать с первого элемента.
