Alterna · учебный материал
min и max без готовых функций
35.3: min и max без готовых функций. Короткая теория, один пример и пошаговая трасса Python.
Что в этом материале
- Как это устроено
- Один пример в исполнении
- Запомнить
Содержание и основные понятия
Чтобы понять ветвление глубже, построим минимум и максимум вручную: заведём текущего кандидата и заменим его только при более сильном значении.
суть и практика
8 класс
ОГЭ №6
ОГЭ №16
01
Как это устроено
Встроенные min и max полезны, но ручной кандидат показывает инвариант: после каждой проверки best хранит лучший результат среди уже просмотренных значений.
Кандидат.
Первое допустимое значение, от которого начинается поиск.
Инвариант.
Утверждение, которое остаётся истинным после каждой итерации или проверки.
Равенство.
Знак > оставляет первую позицию максимума; >= оставляет последнюю.
Независимость.
Для последовательного сравнения значений нужны отдельные if, а не elif.
02
Один пример в исполнении
Запусти короткую программу и переходи по строкам. Визуализатор показывает только код, текущую строку, переменные и вывод.
Нельзя начинать максимум с нуля, если данные могут быть отрицательными. Начни с первого элемента или явно заданной нижней границы из условия. Когда нужен не только максимум, но и его позиция, обновляй значение и индекс одной ветвью. Встроенные
min
и
max
не работают с пустой последовательностью без дополнительных аргументов.
Карта алгоритма
Читай слева направо, затем запускай код.
1
Начало
2
Взять первый кандидат
3
Сравнить следующее значение
4
Заменить кандидата при необходимости
5
Вывести лучший
03
Запомнить
Проверь все отрицательные значения.
Явно реши, что делать при равных максимумах.
Не вызывай max([]) или min([]), пока не определено поведение пустого набора.
Синтаксис этой страницы
min(a, b, ...)
Возвращает наименьший из переданных значений.
max(a, b, ...)
Возвращает наибольший из переданных значений.
if value > best
Условие улучшения кандидата.
enumerate(values)
Даёт пары (индекс, значение) при поиске позиции в последовательности.
map(int, input().split())
Читает несколько целых из строки.
print
Выводит найденный кандидат.