Top.Mail.Ru

Условные конструкции: if, else, elif

Когда мы пишем программы — нам часто нужно принимать решения: если что-то произошло — делаем одно, если нет — другое. Для этого в 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

if score >= 90:
print("Отлично - A")
elif score >= 75:
print("Хорошо - B")
elif score >= 60:
print("Нудно - C")
else:
print("Нужно больше учиться")
Здесь при 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

Цикл While