if-else — это основная конструкция управления потоком выполнения программы. Она позволяет принимать решения в зависимости от условий
Синтаксис конструкции if
if условие: блок_кода_если_условие_истинно
Условие — это выражение, которое возвращает True или False. Здесь нам помогут те самые операторы сравнения (например ==, > и тд — мы разбирали их в 02.03 - Операции с данными)
Если условие истинно (True), выполняется блок кода внутри if
Если условие ложно (False), блок кода пропускается
number = 5if number > 0: print("Число положительное") # Число положительноеprint("продолжаю работу")
Tip
Обратите внимание в коде на последнюю строку, которая выводит сообщение “продолжаю работу”. Она не имеет отступов от начала строки, поэтому она не принадлежит к блоку if и будет выполняться в любом случае, даже если выражение в конструкции if возвратит False
Когда мы работаем с коллекциями данных (списки, словари, множества, строки), без проверки можно столкнуться с ошибками. Вот пример, как проверка с in помогает избежать ошибок:
items = ["apple", "banana", "cherry"]items.remove("orange") # ValueError: list.remove(x): x not in list
Tip
Попытка удалить элемент, которого нет в списке, вызовет ошибку ValueError
Попробуем ее избежать:
items = ["apple", "banana", "cherry"]if "orange" in items: items.remove("orange")
🧪 Практика (лучше закрепить сразу)
Example
Задание №1:
дан код:
number = 5if number > 0: print("Число положительное") # Число положительноеprint("продолжаю работу")
Запусти код, в терминале выполнения ты увидишь результат обоих принтов
Попробуй изменить выражение, чтобы оно получилось False и запусти
проанализируй результат
Попробуй вместо выражения number > 0 передать просто True и затем False
Проанализируй результат работы программы
Задание №2:
Дан массив чисел numbers = [1, 2, 3, 4, 5]
Попробуй узнать индекс элемента 10 - получи ошибку
Используй конструкцию if, чтобы не получить ошибку
Синтаксис конструкции if-else
if условие: блок_кода_если_условие_истинноelse: блок_кода_если_условие_ложно
Если условие в if ложно, выполняется блок кода в else
number = -3if number > 0: print("Число положительное")else: print("Число отрицательное или ноль")
инструкции блока else также должны иметь отступы от начала строки как показано в примере
🧪 Практика
Example
Задание №1
Сделай переменную number
Напиши блок if-else который выведет на экран информацию об этом числе: Четное оно или нечетное
Подсказка если не получается построить логику проверки выражения:
Логику проверки условия можно сделать при помощи оператора, который возвращает остаток от деления. У четных чисел остаток от деления будет равен 0 при делении на 2
Синтаксис конструкции if-elif-else
Note
Если необходимо ввести несколько альтернативных условий, то можно использовать дополнительные блоки elif, после которого идет блок инструкций
if условие1: блок_кода_если_условие1_истинноelif условие2: блок_кода_если_условие2_истинноelse: блок_кода_если_оба_условия_ложны
Note
Сначала Python проверяет выражение if. Если оно равно True, то выполняются инструкции из блока if. Если это условие возвращает False, то Python проверяет выражение из elif
Если выражение после elif равно True, то выполняются инструкции из блока elif. Но если оно равно False то выполняются инструкции из блока else
number = 0if number > 0: print("Число положительное")elif number < 0: print("Число отрицательное")else: print("Число равно нулю")
Tip
При необходимости можно определить несколько блоков elif для разных условий
Note
Программа проверяет условия последовательно сверху вниз, пока одно из них не окажется истинным (True). Как только истинное условие найдено, соответствующий блок кода выполняется, а остальные блоки игнорируются
if условие1: блок_кода_если_условие1_истинноelif условие2: блок_кода_если_условие2_истинноelif условие3: блок_кода_если_условие3_истинноelse: блок_кода_если_все_условия_ложны
Да, в некоторых языка программирования, пишут else if, у нас это elif 😉
🧪 Практика
Example
Задание№1:
дан код:
temperature = 120if temperature < 0: print("Вода замёрзла (лёд)")elif 0 <= temperature < 100: print("Вода жидкая")elif temperature == 100: print("Вода закипела")else: print("Вода в состоянии пара")
Прочесть и код и попробовать без его запуска определить, какой будет вывод в консоль
Воспроизвести это IDE и сверить
Вложенные if-else
Tip
if-else можно вкладывать друг в друга для проверки более сложных условий.
number = 10if number > 0: if number % 2 == 0: print("Число положительное и чётное") else: print("Число положительное и нечётное")else: print("Число отрицательное или равно нулю")
Warning
Изображение забавно пока не сталкиваешься с такой ситуацией в коде - большое кол-во вложенных if-else - дурная практика. Это сильно ухудшает читаемость и поддержку кода.
Используется в крайних случаях, да и то, которые определенно будут иметь более хорошие альтернативы написания. Но знать это - обязательно надо!
🧪 Практика
Example
Задание№2:
Сделай переменную которая хранит число, например number
Напишите программу, которая проверяет число и:
Выводит "Чётное и положительное", если число чётное и больше 0
Выводит "Чётное и отрицательное", если число чётное и меньше 0
Выводит "Нечётное и положительное", если число нечётное и больше 0
Выводит "Нечётное и отрицательное", если число нечётное и меньше 0
Выводит "Число равно нулю", если пользователь ввёл 0
Прогони программу с разными числами и убедись, что все отработало верно
Использование оператора pass
Tip
Если блок if не должен выполнять никаких действий, используйте pass
if 10 > 5: pass # Ничего не делаемelse: print("Сработал else!")
Практика
Example
Сделай условный оператор, где сработает pass, убедись как работает
Сокращённая форма if-else (тернарный оператор)
Tip
Тернарный оператор позволяет сократить запись условий if-else до одной строки, когда требуется выбрать одно из двух значений в зависимости от условия. Он удобен для простых проверок, чтобы сделать код более компактным и читаемым.
Синтаксис:
выражение_если_истинно if условие else выражение_если_ложно
number = 5result = "Положительное" if number > 0 else "Неположительное"print(result) # Вывод: Положительное
Почему он называется тернарным?
Tip
Тернарный оператор состоит из трёх компонентов:
Условие: number > 0
Результат, если условие истинно: "Положительное"
Результат, если условие ложно: "Неположительное"
Note
Так мало кто делает. Просто знай, что так можно, если вдруг где-то встретишь 🙂
🧪 Практика
Example
Задание№1
Напишите программу, где будет 2 переменные с числом, а программа выводит сообщение, какое из чисел наибольшее
Учти, что числа так же могут быть равны друг другу - такой случай тоже надо обработать
Задание№2
Дан список зарегистрированных логинов:
used_logins = ["user123", "hacker", "test_bot"]
Сделать переменную new_login, которая будет содержать в себе "user123"
Написать if-else логику, которая будет проверять, есть ли уже такой логин
В логике проверки использовать оператор in
Выводить в виде текста использовался ли логин или нет
изменить переменную new_login чтобы логин не совпадал с теми, что есть в used_logins