📝 Python

Логические операторы в Python: and, or, not 🔗

0
Author
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Published
30.03.2026
⏱️
Reading time
6 min
👁️
Views
17
🌱
Level
Beginner

Одно условие это хорошо. Но что если нужно проверить несколько условий сразу?

Представь: пустят на аттракцион только если возраст >= 10 И рост >= 140
Или: выходной если суббота ИЛИ воскресенье

Логические операторы помогают объединять условия!

🤝 Оператор AND - оба должны быть правдой

and = “И” = все условия должны быть True

Синтаксис:

if условие1 and условие2:
    код выполнится только если ОБА True

Пример:

age = 17
has_license = True

if age >= 16 and has_license:
    print("Можешь водить скутер! 🛵")
else:
    print("Пока нельзя")

Что происходит:
- age >= 1617 >= 16 → True ✅
- has_license → True ✅
- True and True → True → код выполняется!

Измени age = 15:
- 15 >= 16 → False ❌
- True and False → False → код НЕ выполняется

Реальный пример - доступ к фильму:

age = int(input("Возраст: "))
has_ticket = input("Есть билет? (да/нет): ") == "да"

if age >= 16 and has_ticket:
    print("🎬 Проходи, приятного просмотра!")
else:
    if age < 16:
        print("❌ Фильм с 16 лет")
    elif not has_ticket:
        print("❌ Нужен билет")

Можно больше двух условий:

age = 18
has_license = True
has_car = True

if age >= 18 and has_license and has_car:
    print("🚗 Можешь ехать!")
else:
    print("❌ Условия не выполнены")

Все три должны быть True!

💫 Оператор OR - хотя бы одно правда

or = “ИЛИ” = достаточно одного True

Синтаксис:

if условие1 or условие2:
    код выполнится если ХОТЯ БЫ ОДНО True

Пример:

day = input("Какой день? ")

if day == "суббота" or day == "воскресенье":
    print("🎉 Выходной!")
else:
    print("📚 Будний день")

Что происходит:
- Если “суббота” → первое True → результат True
- Если “воскресенье” → второе True → результат True
- Если “понедельник” → оба False → результат False

Проверка прав доступа:

role = "admin"

if role == "admin" or role == "moderator":
    print("✅ Доступ к админке разрешён")
else:
    print("❌ Доступ запрещён")

Несколько or:

grade = input("Оценка: ")

if grade == "A" or grade == "B" or grade == "C":
    print("✅ Зачёт!")
else:
    print("❌ Не зачёт")

Хотя бы одна из оценок A, B или C → зачёт

🔄 Оператор NOT - инверсия (переворачивание)

not = “НЕ” = переворачивает True в False и наоборот

Синтаксис:

if not условие:
    код выполнится если условие False

Пример:

is_raining = False

if not is_raining:
    print("☀️ Можно гулять!")
else:
    print("☔ Останься дома")

Что происходит:
- is_raining → False
- not False → True
- Код выполняется!

С переменными:

is_logged_in = False

if not is_logged_in:
    print("❌ Пожалуйста, войди в систему")
else:
    print("✅ Добро пожаловать!")

NOT с операторами:

age = 15

if not age >= 18:  # То же что: age < 18
    print("Ты младше 18")

Хотя чаще пишут просто:

if age < 18:
    print("Ты младше 18")

📊 Таблицы истинности

AND - все должны быть True:

True  and True   = True   # Только этот случай даёт True!
True  and False  = False
False and True   = False
False and False  = False

Простое правило: Хотя бы один False → результат False

OR - хотя бы один True:

True  or True   = True
True  or False  = True   # Любой True → результат True
False or True   = True
False or False  = False  # Только оба False → результат False

Простое правило: Хотя бы один True → результат True

NOT - переворачивает:

not True  = False
not False = True

🎯 Комбинирование операторов

Можно объединять and, or, not!

Пример - доступ к аттракциону:

age = int(input("Возраст: "))
height = int(input("Рост (см): "))

# Пустят если:
# (возраст >= 10 И рост >= 140) ИЛИ возраст >= 16

if (age >= 10 and height >= 140) or age >= 16:
    print("🎢 Проходи!")
else:
    print("❌ К сожалению, нельзя")

Рассмотрим случаи:
1. Возраст 12, рост 145: (12≥10 and 145≥140) → True → пускают ✅
2. Возраст 9, рост 145: (9≥10 and 145≥140) → False, 9≥16 → False → не пускают ❌
3. Возраст 17, рост 130: (17≥10 and 130≥140) → False, но 17≥16 → True → пускают! ✅

Сложный пример - VIP доступ:

age = 20
is_member = True
has_discount = False

# VIP если:
# (возраст >= 18 И member) ИЛИ (NOT has_discount И возраст >= 21)

if (age >= 18 and is_member) or (not has_discount and age >= 21):
    print("⭐ VIP доступ!")
else:
    print("🎫 Обычный доступ")

Используй скобки для ясности!

📍 Приоритет операций

При использовании нескольких операторов:

  1. Сначала not
  2. Потом and
  3. Потом or

Пример:

x = True
y = False
z = True

result = not x and y or z
# Выполняется так:
# 1. not x → not True → False
# 2. False and y → False and False → False
# 3. False or z → False or True → True
# Итог: True

Совет: Лучше используй скобки чтобы было понятнее!

result = ((not x) and y) or z  # Так яснее!

💡 Реальные примеры

1. Проверка пароля:

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("❌ Пароль должен содержать цифру")

2. Определение сезона:

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)

3. Валидация email (упрощённая):

email = input("Email: ")

has_at = "@" in email
has_dot = "." in email
not_empty = len(email) > 0

if has_at and has_dot and not_empty:
    print("✅ Email выглядит корректно")
else:
    print("❌ Email некорректный")

4. Игра - можно ли атаковать:

health = 80
mana = 30
has_weapon = True

# Атаковать можно если:
# здоровье > 20 И (мана >= 10 ИЛИ есть оружие)

if health > 20 and (mana >= 10 or has_weapon):
    print("⚔️ Атака!")
else:
    print("🛡️ Защита...")

⚠️ Частые ошибки

1. Лишний повтор переменной:

# ❌ Неправильно:
if age >= 10 and >= 18:
    print("OK")

# ✅ Правильно:
if age >= 10 and age <= 18:
    print("OK")

# ✅ Ещё лучше (Python фишка):
if 10 <= age <= 18:
    print("OK")

2. Использование = вместо ==:

# ❌ Присваивание!
if age = 18 and has_ticket:
    print("OK")

# ✅ Проверка:
if age == 18 and has_ticket:
    print("OK")

3. Путаница and и or:

# Задача: пустить если ЛИБО возраст >= 18, ЛИБО есть parents

# ❌ Неправильно (нужно И ТО И ДР УГОЕуётоЕ!):
if age >= 18 and has_parents:
    print("OK")

# ✅ Правильно (достаточно ОДНОГО):
if age >= 18 or has_parents:
    print("OK")

4. Забыл ключевое слово:

# ❌ Забыл слово 'and':
if age >= 10 height >= 140:
    print("OK")

# ✅ Правильно:
if age >= 10 and height >= 140:
    print("OK")

🎮 Практические задачи

Лёгкий уровень:

1. Проверка диапазона
Число в диапазоне 10-20 включительно?

2. Выходной день
День “суббота” или “воскресенье”?

3. НЕ чётное
Число НЕ чётное? (используй not)

Средний уровень:

4. Допуск к экзамену
Допустят если: (посещаемость > 80% И все ДЗ сданы) ИЛИ есть индивидуальный план

5. Скидка
Скидка 20% если: (покупка >= 5000 И есть карта) ИЛИ покупка >= 10000

6. Можно ли водить
Разрешение если: возраст >= 18 И есть права И НЕ лишён прав

Сложный уровень:

7. Доступ к курсу
Доступ если: (student И оплачено) ИЛИ (teacher) ИЛИ (admin И НЕ заблокирован)

8. Определение типа треугольника
По трём сторонам определи: равносторонний / равнобедренный / разносторонний

🚀 Итого

Ты научился:

✅ Использовать and чтобы требовать ВСЕ условия
✅ Использовать or когда достаточно ОДНОГО условия
✅ Использовать not для инверсии
✅ Комбинировать операторы
✅ Понимать приоритет операций
✅ Избегать распространённых ошибок

С логическими операторами твои программы становятся намного умнее! 🧠


Практикуйся в CodeHS! Создавай программы с разными комбинациями условий. Экспериментируй! 💪

Your reaction to the article

💬 Comments (0)

🔐 Sign in to leave a comment
🚪 Login
💭

No comments yet

Be the first to share your opinion about this article!

🔗 Similar

Similar articles

Continue learning with these materials

📝

JSON: Сохранение данных как в большой игре 💾

Цель: Научиться сохранять и загружать данные в формате JSON.

📅 03.04.2026 👁️ 22
📝

map() — Преобразуй всё разом! 🔄

map() применяет функцию к каждому элементу списка и возвращает результаты.

📅 03.04.2026 👁️ 20
📝

filter() — Отбери лучшее! 🔍

filter() отбирает элементы, которые проходят проверку (возвращают True).

📅 03.04.2026 👁️ 12

Did you like the article?

Subscribe to our updates and receive new articles first. Grow with PyLand!