Разветвляющиеся алгоритмы в Python
Представь: ты заходишь в инсту, и алгоритм решает — показать тебе рилс с котиками или с футболом. Как он это делает? Правильно, проверяет условие! Сейчас мы разберём, как научить компьютер принимать решения и выбирать, что делать дальше.
1. Полная форма условного оператора
В Python, когда нужно выбрать один из двух вариантов действий, мы используем конструкцию if-else (читается как «если-иначе»).
Условие проверено — программа выбирает путь
Как это выглядит:
if <условие>:
# группа команд 1
# выполнится, если условие истинно
else:
# группа команд 2
# выполнится, если условие ложно
⚠️ Обрати внимание:
- После
ifиelseставится двоеточие: - Все команды внутри блока обязательно пишутся с отступом (обычно 4 пробела или Tab)
- В Python отступы — это не просто красота, это синтаксис! Без них код не работает
Пример 1: Чётное или нечётное?
Напишем программу, которая определяет, чётное ли число ввёл пользователь.
x = int(input('Введи число: '))
if x % 2 == 0:
print(f'{x} - чётное число')
else:
print(f'{x} - нечётное число')
💡 Как это работает:
x % 2— остаток от деления на 2- Если остаток равен 0 — число чётное
- Иначе — нечётное
Попробуй сам: введи 8, потом 15. Видишь разницу?
Пример 2: Попадает ли точка в отрезок?
Часто в играх нужно проверить, находится ли персонаж в определённой зоне. Давай напишем программу, которая проверяет, лежит ли число X в диапазоне от A до B.
print('Проверка принадлежности точки отрезку')
a = float(input('Введи начало отрезка (a): '))
b = float(input('Введи конец отрезка (b): '))
x = float(input('Введи точку (x): '))
if x >= a and x <= b:
print(f'Точка {x} принадлежит отрезку [{a}, {b}]')
else:
print(f'Точка {x} НЕ принадлежит отрезку [{a}, {b}]')
🔥 Фишка здесь:
and— логическая операция «И» (оба условия должны быть истинны)x >= a and x <= bможно записать короче:a <= x <= b— да, в Python так можно!
2. Неполная форма условного оператора
Иногда нам нужно что-то сделать только при выполнении условия, а если условие ложно — просто ничего не делать. Для этого используем if без else.
Если условие не выполнено — просто идём дальше
Как это выглядит:
if <условие>:
# группа команд
# выполнится только если условие истинно
# если условие ложно, программа просто идёт дальше
Пример 3: Найти наибольшее из трёх чисел
Давай найдём максимальное число среди трёх введённых значений.
print('Нахождение наибольшего из трёх величин')
a = int(input('Введи a: '))
b = int(input('Введи b: '))
c = int(input('Введи c: '))
y = a # предполагаем, что a — максимальное
if b > y:
y = b
if c > y:
y = c
print(f'Максимальное число: {y}')
💡 Как работает:
- Сначала считаем, что
y = a - Если
bбольше — перезаписываемy = b - Если
cбольше — перезаписываемy = c - В итоге в
yточно окажется максимум
🎯 Задание для тебя:
Допиши эту программу так, чтобы она находила максимальное из четырёх чисел (добавь переменную d).
Пример 4: Решение квадратного уравнения
Помнишь квадратное уравнение из алгебры? ax² + bx + c = 0
Давай напишем программу, которая его решает!
print('Решение квадратного уравнения ax² + bx + c = 0')
a = float(input('Введи коэффициент a: '))
b = float(input('Введи коэффициент b: '))
c = float(input('Введи коэффициент c: '))
# Вычисляем дискриминант
d = b**2 - 4*a*c
if d < 0:
print('Корней нет (дискриминант отрицательный)')
if d == 0:
x = -b / (2*a)
print(f'Один корень: x = {x:.3f}')
if d > 0:
x1 = (-b + d**0.5) / (2*a)
x2 = (-b - d**0.5) / (2*a)
print('Два корня:')
print(f'x1 = {x1:.3f}')
print(f'x2 = {x2:.3f}')
📌 Обрати внимание:
**— возведение в степень (d**0.5— корень из d):.3f— форматирование числа (3 знака после запятой)
3. Вложенные условия — выбор внутри выбора
Иногда после одной проверки нужна ещё одна. Например: «Если есть интернет, то если есть деньги на счету — включи видео, иначе — покажи рекламу».
Выбор за выбором — вложенные условия
В Python можно использовать конструкцию if-elif-else (читается «если-иначе если-иначе»).
Как это выглядит:
if <условие_1>:
# выполнится, если условие_1 истинно
elif <условие_2>:
# выполнится, если условие_1 ложно, но условие_2 истинно
else:
# выполнится, если оба условия ложны
Пример 5: Квадратное уравнение — версия 2.0
Перепишем программу решения квадратного уравнения с использованием elif:
print('Введи коэффициенты квадратного уравнения a, b, c')
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
d = b**2 - 4*a*c
if d < 0:
print('Нет корней')
elif d == 0:
x = -b / (2*a)
print(f'x = {x:.3f}')
else:
x1 = (-b - d**0.5) / (2*a)
x2 = (-b + d**0.5) / (2*a)
print(f'x1 = {x1:.3f}')
print(f'x2 = {x2:.3f}')
✨ Почему так лучше?
- Код читается как история: «Если вот это — делаем раз, иначе если вот это — делаем два, а если ничего не подошло — делаем три»
- Меньше повторений, меньше путаницы
🎯 Твоё задание:
Используй вложенные ветвления и напиши программу для проверки принадлежности точки X отрезку [a, b].
4. Множественное ветвление — таблицы решений
Когда вариантов развития событий много, можно построить таблицу решений. Давай разберём на примере.
От баллов к оценке — много вариантов, одно решение
Пример 6: Перевод баллов в оценку
Таблица решений:
| Баллы | Оценка |
|---|---|
| 0 ≤ баллы < 20 | 1 |
| 20 ≤ баллы < 40 | 2 |
| 40 ≤ баллы < 60 | 3 |
| 60 ≤ баллы < 80 | 4 |
| 80 ≤ баллы ≤ 100 | 5 |
ball = int(input('Введи баллы (0-100): '))
if ball < 20:
mark = 1
elif ball < 40:
mark = 2
elif ball < 60:
mark = 3
elif ball < 80:
mark = 4
else:
mark = 5
print(f'Оценка: {mark}')
💡 Почему работает именно так:
- Если
ball < 20— сразу ставим 1 - Если дошли до
elif ball < 40, значит ball уже ≥ 20, проверяем только < 40 - И так далее — каждый
elifотсекает предыдущие варианты
📌 Самое главное
if-else) — когда нужно сделать одно ИЛИ другое
if без else) — когда действие нужно только при истинном условии
if-elif-else) — для множественного выбора
and (И), or (ИЛИ), not (НЕ)
== (равно), != (не равно), >, <, >=, <=
🤔 Проверь себя
Проверь, как хорошо ты усвоил материал!
1. Найди ошибку: что не так в этом коде?
if x < y then x = 0 else print(y)
Подсказка: В Python нет слова then, нужны двоеточия и отступы!
2. Загадка: условный оператор или нет?
Определи, в каких случаях нужен else, а в каких достаточно просто if:
- a) Проверить, совершеннолетний ли пользователь, и если нет — закрыть доступ
- b) Выбрать, какое видео показать: с котиками или с собаками
- c) Добавить бонусные баллы, если игрок прошёл уровень быстрее 60 секунд
3. Переведи на Python
Напиши программу: если число делится и на 2, и на 3 — выведи «Делится на 6», иначе — «Не делится на 6».
Подсказка: используй оператор and и остаток от деления %
4. Придумай свой пример
Где в твоей жизни встречаются разветвляющиеся алгоритмы?
Подсказка: выбор игры, какую музыку включить, что поесть, какой фильм посмотреть...
5. Исправь и улучши
Программа должна определять, положительное ли число. Что здесь можно улучшить?
x = int(input('Число: '))
if x > 0:
print('Положительное')
if x < 0:
print('Отрицательное')
if x == 0:
print('Ноль')
Подсказка: можно использовать elif вместо нескольких if
6. Челлендж: високосный год
Напиши программу, которая определяет, високосный ли год.
Правило:
- Год високосный, если он делится на 4
- НО если делится на 100 — то не високосный
- НО если делится на 400 — то всё-таки високосный
Подсказка: тебе понадобятся вложенные условия!
7. А теперь представь...
...что объясняешь другу, как работает if-elif-else. Сможешь?
Это лучший способ проверить, что ты действительно понял тему!
🎯 Практические задания
Попробуй применить полученные знания на практике!
📊 Задание 1: Калькулятор оценок
Напиши программу, которая переводит процент правильных ответов в оценку:
- 90-100% → 5
- 75-89% → 4
- 60-74% → 3
- Меньше 60% → 2
🌡️ Задание 2: Термометр
Создай программу-советчик по одежде в зависимости от температуры:
- Ниже 0°C → «Надень пуховик!»
- 0-15°C → «Надень куртку»
- 15-25°C → «Лёгкая кофта»
- Выше 25°C → «Футболка!»
🎮 Задание 3: Игровой бот
Напиши программу для игры «Камень, ножницы, бумага»:
- Пользователь вводит свой выбор
- Компьютер делает случайный выбор
- Программа определяет победителя
Подсказка: используй import random
💰 Задание 4: Магазинная скидка
Создай программу расчёта скидки:
- Покупка от 1000₽ → скидка 5%
- Покупка от 5000₽ → скидка 10%
- Покупка от 10000₽ → скидка 15%
Программа должна выводить итоговую сумму со скидкой