Когда мы пишем программы — нам часто нужно принимать решения: если что-то произошло — делаем одно, если нет — другое. Для этого в Python есть специальные конструкции: if, elif и else.
Представьте, что программа — это робот, который каждый раз задаётся вопросом: «Что мне делать?» Ответ на этот вопрос зависит от условий, которые мы ему задаём.
if — это как волшебное слово «если». Робот смотрит на условие и, если оно выполняется, выполняет нужные действия.
Условие, которое мы проверяем — пишется после if. Как только условие написано — ставится двоеточие. А нужные нам действия записываются с новой строки с отступом (либо 4 пробела, либо табуляция)
age = 18 # определили переменную
if age >= 18: # прописали if, записали условие и поставили двоеточие
print("Ты взрослый!") # записали команду после отступа
Здесь программа проверяет: если возраст больше или равен 18, она говорит: «Ты взрослый!»
Но что, если условие не выполнилось? Как прописать действия, которые необходимо сделать в этом случае? Тогда мы можем добавить else — это как сказать роботу: «Во всех иных случаях (когда условие не выполняется) поступай так».
age = 16 # определили переменную
if age >= 18: # прописали if, записали условие и поставили двоеточие
print("Ты взрослый!") # записали команду после отступа
else: # прописали else и поставили двоеточие
print("Ты ещё не взрослый.") # записали команду после отступа
Если возраст не больше или равен 18, программа скажет: «Ты ещё не взрослый.»
Иногда возможностей больше чем две. Например, вы печёте пирог, и вам нужно действовать в зависимости от времени в духовке.
В таком случае можно использовать elif. Оператор elif (сокращение от «else if») добавляет дополнительные условия:
bake_time = 30
if bake_time < 20:
print("Пирог сырой!")
elif bake_time < 30:
print("Пирог почти готов.")
else:
print("Пирог готов! Можно есть!")
Программа сначала смотрит, меньше ли время, чем 20 минут — если да, говорит, что пирог сырой. Потом проверяет ещё одно условие — если меньше 30, но больше или равно 20, говорит, что почти готово. Если условия не подошли, значит, пирог готов!
Обратите внимание, что в elif нам не надо прописывать проверку условия, что время больше или равно 20: ведь если программа «прошла» if, то мы уже и так это знаем.
Резюмируем:
Всегда начинать надо с if -это первое и обязательное условие, с которого начинается проверка.
После if вы можете записать сколько угодно блоков elif — они проверяются последовательно сверху вниз и выполняется только первый блок, условие которого истинно. Как только истинное условие найдено — следующие блоки уже не выполняются.
Если ни одно из условий if и elif не подошло, срабатывает else — блок по умолчанию, он необязателен, но полезен, чтобы обработать все остальные, «неподходящие» для всех условий варианты.
Важно: Python читает условия последовательно сверху вниз. Когда он встречает первое истинное условие, то выполняет его блок и пропускает все остальные.
Здесь при score = 85 Python увидит, что первое условие ложно, второе — истина, выведет «Хорошо — B» и дальше проверять не станет.
Иногда нам могут понадобиться еще и вложенные условия. Вложенные условия — это когда внутри блока if, elif или else есть ещё блок условий. Это как в квесте: сначала выбираем дорогу, а потом рассматриваем варианты, что делать на выбранной дороге.
# Квест: Выбор пути в лесу
print("Ты стоишь на развилке в лесу. Куда пойдёшь?")
path = input("Выбери направление: 'налево', 'направо' или 'прямо': ")
if path == "налево":
print("Ты повернул налево и встретил мистического ежа!")
action = input("Что делать? 'погладить' или 'убежать': ")
if action == "погладить":
print("Ёж обрадовался и дал тебе волшебный гриб! Ты выиграл!")
else:
print("Ты убежал, но потерялся в лесу. Конец квеста.")
elif path == "направо":
print("Ты пошёл направо и увидел реку.")
swim = input("Переплывать реку? 'да' или 'нет': ")
if swim == "да":
print("Ты переплыл реку и нашёл сундук с сокровищами! Ура!")
else:
print("Ты решил не рисковать и пошёл обратно, но встретил волка. Конец квеста.")
elif path == "прямо":
print("Ты идёшь прямо и находишь таинственный замок.")
enter = input("Войти внутрь? 'да' или 'нет': ")
if enter == "да":
print("В замке ты встретил доброго мага, который помог тебе выбраться из леса. Победа!")
else:
print("Ты обошёл замок стороной и заблудился. Конец квеста.")
else:
print("Ты стоишь на месте и не знаешь, куда идти. Квест не начинается.")
Как это работает?
Сначала программа спрашивает, куда пойдёшь — «налево», «направо» или «прямо».
Внутри каждого варианта есть вложенные условия — например, что делать с ежом, переплывать ли реку или входить в замок.
В каждом вложенном условии результат разный — либо выигрыш, либо конец квеста.
Так работает вложенность: сначала выбираем большой путь (главное решение), а потом — маленькое решение внутри него.
-
Задачи для самопроверки
Задача 1. Светофор: что делать?
Условие. В переменную color считывается цвет светофора: «красный», «желтый» или «зелёный». Напишите программу, которая выводит:
— при «красный» — «Стоп» — при «желтый» — «Жди» — при «зелёный» — «Иди»
Если значение отличное от этих трёх, выведите «Неизвестный сигнал». (Дополнительно учтите вариант написания «зеленый» без ё.)
Решение: [[toggle]]
color = input() # попробуйте: "красный", "желтый", "зелёный", "зеленый", "фиолетовый"
if color == "красный":
print("Стоп")
elif color == "желтый":
print("Жди")
elif color == "зелёный" or color == "зеленый":
print("Иди")
else:
print("Неизвестный сигнал")
Задача 2. Билет в парк аттракционов
Условие. Цена билета зависит от возраста:
— до 6 лет включительно — бесплатно; — 7−17 лет — 150; — 18−64 года — 300; — 65+ — 200.
Дополнительно, если у посетителя есть студенческий билет (is_student == True) и его базовая цена не нулевая, применяется дополнительная скидка 20% к рассчитанной цене. Найдите итоговую стоимость и выведите текст вида: Итог: X.
Решение: [[toggle]]
age = int(input())
is_student = True
if age <= 6:
price = 0
elif age <= 17:
price = 150
elif age <= 64:
price = 300
else:
price = 200
if price > 0 and is_student:
price = round(price * 0.8) # -20%
print("Итог:", price) # Итог: 120