Одно условие — хорошо. Но что если нужно проверить несколько условий сразу?
- Пустят на аттракцион:
возраст >= 10 AND рост >= 140 - Выходной:
суббота OR воскресенье - Вход запрещён:
NOT авторизован
Логические операторы позволяют объединять условия.
AND — все условия должны быть True
if условие1 and условие2:
# выполнится только если ОБА True
age = 17
has_license = True
if age >= 16 and has_license:
print("Можешь водить скутер!")
else:
print("Пока нельзя")
# Вывод: Можешь водить скутер!
Таблица истинности AND:
True and True → True # только этот случай даёт True
True and False → False
False and True → False
False and False → False
Правило: хотя бы один False → результат False.
OR — достаточно одного True
if условие1 or условие2:
# выполнится если ХОТЯ БЫ ОДНО True
day = "суббота"
if day == "суббота" or day == "воскресенье":
print("Выходной!")
else:
print("Будний день")
# Вывод: Выходной!
Таблица истинности OR:
True or True → True
True or False → True # любой True → результат True
False or True → True
False or False → False # только оба False → результат False
Правило: хотя бы один True → результат True.
NOT — инверсия
if not условие:
# выполнится если условие False
is_raining = False
if not is_raining:
print("Можно гулять!")
else:
print("Останься дома")
# Вывод: Можно гулять!
not True → False
not False → True
Приоритет операций
При смешивании операторов порядок выполнения:
not(первый)and(второй)or(третий)
x = True
y = False
z = True
result = not x and y or z
# Шаг 1: not x → False
# Шаг 2: False and y → False
# Шаг 3: False or z → True
print(result) # True
Используй скобки для ясности:
result = ((not x) and y) or z # Явно и понятно
Комбинирование операторов
age = int(input("Возраст: "))
height = int(input("Рост (см): "))
# Пустят если: (возраст >= 10 И рост >= 140) ИЛИ возраст >= 16
if (age >= 10 and height >= 140) or age >= 16:
print("Проходи!")
else:
print("К сожалению, нельзя")
Разбор случаев:
- Возраст 12, рост 145: (True and True) or False → True — пускают
- Возраст 9, рост 145: (False and True) or False → False — нет
- Возраст 17, рост 130: (True and False) or True → True — пускают
Практические примеры
Проверка пароля
password = input("Пароль: ")
length_ok = len(password) >= 8
has_digit = any(char.isdigit() for char in password)
if length_ok and has_digit:
print("Пароль надёжный")
else:
if not length_ok:
print("Пароль слишком короткий (нужно >= 8 символов)")
if not has_digit:
print("Пароль должен содержать цифру")
Определение сезона
month = int(input("Месяц (1-12): "))
if month == 12 or month == 1 or month == 2:
season = "Зима"
elif month >= 3 and month <= 5:
season = "Весна"
elif month >= 6 and month <= 8:
season = "Лето"
elif month >= 9 and month <= 11:
season = "Осень"
else:
season = "Некорректный месяц"
print(season)
Частая ошибка: пропуск имени переменной
# ❌ НЕПРАВИЛЬНО — синтаксическая ошибка
if age >= 10 and >= 18:
print("OK")
# ✅ ПРАВИЛЬНО
if age >= 10 and age <= 18:
print("OK")
# ✅ Ещё лучше — Python поддерживает цепочки сравнений
if 10 <= age <= 18:
print("OK")
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!