Условные конструкции — неотъемлемая часть любого языка програмрования, Python не исключение. В этом уроке рассмотрим различные аспекты условных конструкций в Python: вложенные условия, составные условия и тернарный оператор. Также познакомимся с функциональностью match-case, появившейся в Python 3.10.
Проверка на пустое значение
Python считает ложным (False) значения: булево False, целое число 0, вещественное число 0.0, пустая строка, пустой список и т. д. Все остальные значения истинны (True). Это удобно для проверки на пустоту:
name = input()
if name:
print(name)
else:
print("Вы ничего не ввели")
Здесь if name: эквивалентно if name == True:. Условие истинно, если переменная name содержит значение. Хотя можно явно писать if name == True:, это менее лаконично.
Вложенные условные конструкции
Условные конструкции можно вкладывать:
a = True
b = False
if a == True:
if b == True:
print(1)
else:
print(2)
else:
if b == True:
print(3)
else:
print(4)
Важно следить за отступами, определяющими принадлежность блоков кода к условным конструкциям. Чрезмерная вложенность ухудшает читаемость, поэтому следует стремиться к минимальной глубине вложенности.
Составные условия
Для проверки нескольких условий одновременно используются цепочки сравнений или логические операторы.
Цепочки сравнений:
a = int(input())
if 10 < a < 20:
print(a)
Этот пример демонстрирует проверку, находится ли число a в интервале (10, 20). Однако, такой подход не всегда удобен, особенно при работе со сложными условиями или нечисловыми данными.
Логические операторы:
- and (логическое умножение): Результат True только если все условия истинны.
- or (логическое сложение): Результат True, если хотя бы одно условие истинно.
- not (логическое отрицание): Инвертирует значение условия.
Пример использования логических операторов:
x = 20
if x > 10 and x < 100:
print("Условие выполнено")
a = int(input())
if a == 10 or a == 20 or a == 30:
print("10, 20 или 30")
elif a > 10 and a < 100:
print("10-100")
else:
print(a)
При использовании нескольких логических операторов скобки помогают контролировать порядок выполнения операций.
Оператор pass
Иногда нужно задать условие, не требующее выполнения действий. В таких случаях используется оператор pass:
a = int(input())
if a < 10:
pass
else:
print(a)
Тернарный оператор
Тернарный оператор позволяет записать конструкцию if-else в одну строку:
a = int(input())
number = a if a < 20 else 100
print(number)
Это делает код компактнее и читабельнее, особенно полезно при использовании в генераторах списков.
match-case (Python 3.10+)
В Python 3.10 появилась конструкция match-case, аналогичная switch-case в других языках. Она позволяет сопоставлять выражение с несколькими шаблонами:
genre = int(input("Какой жанр вас интересует?\n1 - Комедия\n2 - Фантастика\n3 - Ужасы\n"))
match genre:
case 1:
print("Один дома")
case 2:
print("Стражи Галактики")
case 3:
print("Астрал")
case _:
print("У нас нет такого жанра")
case _: обрабатывает случаи, когда ни один из предыдущих шаблонов не совпал. Также можно использовать case 1 | 2: для обработки нескольких значений в одном case.
Рассмотрели различные типы условных конструкций в Python: от простых проверок до сложных составных условий и новой конструкции match-case. Правильное использование условных конструкций — ключ к созданию читаемого, эффективного и надёжного кода.