Введение
Помните, как в наших прошлых статьях мы учились создавать переменные и работать с данными? Мы научили Python запоминать информацию и выполнять простые вычисления. Но сегодня пришло время сделать наши программы по-настоящему умными — научить их принимать решения!
Представьте себя утром перед выходом из дома. Вы смотрите в окно и думаете: «Если на улице дождь, возьму зонт. Если солнечно — надену солнечные очки. А если холодно — куртку потеплее». Именно так же работает человеческий мозг — анализирует ситуацию и принимает решения на основе условий.
Сегодня мы научим наши программы делать то же самое! Условные операторы Python позволяют коду «думать» и выбирать разные пути выполнения в зависимости от обстоятельств. Это фундаментальная концепция программирования, которая превращает простые скрипты в интеллектуальные приложения.
В конце этой статьи ваши программы смогут:
- Проверять возраст пользователя перед показом контента
- Рассчитывать скидки в интернет-магазине
- Определять время суток и приветствовать пользователя соответственно
- Создавать простые игры с логикой принятия решений
Готовы сделать ваш код умнее? Поехали!
Что такое условный оператор
Условный оператор — это инструкция, которая говорит программе: «Если выполняется определённое условие, сделай это, иначе — сделай то». В Python основным условным оператором является if (с английского «если»).
Давайте рассмотрим самый простой пример:
age = 18
if age >= 18:
print("Доступ разрешён!")
Что здесь происходит?
- Мы создали переменную
ageсо значением 18 - Проверили условие: возраст больше или равен 18
- Если условие истинно (а оно истинно, ведь 18 >= 18), выполняется код с отступом
- На экран выводится «Доступ разрешён!»
Обратите внимание на важные элементы синтаксиса:
- Ключевое слово
if - Условие
age >= 18 - Двоеточие
:в конце строки с условием - Отступ (обычно 4 пробела) перед кодом, который выполняется при истинности условия
Отступы в Python — это не просто красота кода, это обязательное требование! Именно по отступам Python понимает, какой код относится к условию.
Попробуем изменить возраст:
age = 16
if age >= 18:
print("Доступ разрешён!")
print("Программа завершена")
Результат:
Программа завершена
Видите? Сообщение «Доступ разрешён!» не появилось, потому что условие 16 >= 18 ложно. Но последняя строка выполнилась, поскольку она не имеет отступа и не относится к условию.
Операторы сравнения
Для создания условий мы используем операторы сравнения:
| Оператор | Значение | Пример |
|---|---|---|
== | Равно | x == 5 |
!= | Не равно | x != 5 |
> | Больше | x > 5 |
< | Меньше | x < 5 |
>= | Больше или равно | x >= 5 |
<= | Меньше или равно | x <= 5 |
Вот несколько примеров:
temperature = 25
if temperature > 30:
print("На улице жарко!")
if temperature == 25:
print("Комфортная температура")
name = "Анна"
if name == "Анна":
print("Привет, Анна!")
Конструкция if и else
В жизни у каждого «если» обычно есть альтернатива. Если дождь — возьмём зонт, иначе — оставим дома. В Python для этого служит ключевое слово else («иначе»).
age = 16
if age >= 18:
print("Добро пожаловать в кинотеатр!")
print("Можете смотреть любые фильмы")
else:
print("Извините, вам доступны только детские фильмы")
print("Приходите, когда исполнится 18 лет")
Результат для возраста 16:
Извините, вам доступны только детские фильмы Приходите, когда исполнится 18 лет
А теперь изменим возраст на 20:
age = 20
if age >= 18:
print("Добро пожаловать в кинотеатр!")
print("Можете смотреть любые фильмы")
else:
print("Извините, вам доступны только детские фильмы")
print("Приходите, когда исполнится 18 лет")
Результат:
Добро пожаловать в кинотеатр! Можете смотреть любые фильмы
Практический пример: Проверка пароля
Создадим простую программу для проверки пароля:
password = input("Введите пароль: ")
if password == "python123":
print("✅ Пароль верный!")
print("Добро пожаловать в систему")
else:
print("❌ Неверный пароль")
print("Доступ запрещён")
Этот код демонстрирует важную концепцию: программа принимает решение на основе пользовательского ввода. Теперь наш код реагирует на действия пользователя!
Ещё один пример: Определение чётности числа
number = int(input("Введите число: "))
if number % 2 == 0:
print(f"Число {number} чётное")
else:
print(f"Число {number} нечётное")
Здесь мы используем оператор % (остаток от деления). Если число делится на 2 нацело (остаток равен 0), оно чётное.
Оператор elif — несколько вариантов
В реальной жизни часто бывает не два варианта, а несколько. Например, при выставлении оценок в школе: отлично, хорошо, удовлетворительно, плохо. Для таких случаев в Python есть elif (сокращение от «else if» — «иначе если»).
Школьные оценки
score = int(input("Введите количество баллов (0-100): "))
if score >= 90:
print("Оценка: Отлично (A)")
print("🎉 Поздравляем с отличным результатом!")
elif score >= 80:
print("Оценка: Хорошо (B)")
print("👍 Хороший результат!")
elif score >= 70:
print("Оценка: Удовлетворительно (C)")
print("📚 Можно улучшить результат")
elif score >= 60:
print("Оценка: Неудовлетворительно (D)")
print("⚠️ Нужно больше заниматься")
else:
print("Оценка: Провал (F)")
print("💪 Не сдавайтесь, попробуйте ещё раз!")
Важно понимать логику выполнения:
- Python проверяет условия сверху вниз
- Как только одно из условий становится истинным, выполняется соответствующий блок кода
- Все остальные условия пропускаются
Например, если score = 95, программа:
- Проверяет
95 >= 90— истина! Выполняется блок кода - Остальные условия (
elifиelse) пропускаются
Тарифы на интернет
Создадим программу для выбора тарифа в зависимости от потребностей пользователя:
gb_per_month = int(input("Сколько ГБ интернета вы используете в месяц? "))
if gb_per_month <= 5:
tariff = "Эконом"
price = 300
elif gb_per_month <= 15:
tariff = "Стандарт"
price = 500
elif gb_per_month <= 30:
tariff = "Комфорт"
price = 700
else:
tariff = "Безлимит"
price = 1000
print(f"Рекомендуемый тариф: {tariff}")
print(f"Стоимость: {price} рублей в месяц")
print(f"Экономия в год: {(1000 - price) * 12} рублей")
Определение времени суток
hour = int(input("Введите текущий час (0-23): "))
if hour >= 6 and hour < 12:
time_period = "утро"
greeting = "Доброе утро! ☀️"
elif hour >= 12 and hour < 18:
time_period = "день"
greeting = "Добрый день! 🌞"
elif hour >= 18 and hour < 22:
time_period = "вечер"
greeting = "Добрый вечер! 🌅"
else:
time_period = "ночь"
greeting = "Доброй ночи! 🌙"
print(f"Сейчас {time_period}")
print(greeting)
Этот пример показывает, как elif позволяет создать цепочку проверок для покрытия всех возможных случаев.
Логические операторы (and, or, not)
Иногда нам нужно проверить несколько условий одновременно. В Python для этого служат логические операторы:
and— «И» (все условия должны быть истинными)or— «ИЛИ» (хотя бы одно условие должно быть истинным)not— «НЕ» (инвертирует условие)
Оператор and
age = int(input("Введите ваш возраст: "))
has_license = input("Есть ли у вас водительские права? (да/нет): ").lower()
if age >= 18 and has_license == "да":
print("🚗 Вы можете арендовать автомобиль!")
else:
print("❌ К сожалению, аренда недоступна")
if age < 18:
print(" Причина: недостаточный возраст")
if has_license != "да":
print(" Причина: отсутствуют водительские права")
Оператор or
weather = input("Какая погода? (солнечно/облачно/дождь): ").lower()
mood = input("Какое настроение? (хорошее/плохое): ").lower()
if weather == "солнечно" or mood == "хорошее":
print("🚶♂️ Отлично! Идём гулять!")
print("Прогулка поднимет настроение")
else:
print("🏠 Лучше остаться дома")
print("Можно посмотреть фильм или почитать книгу")
Оператор not
is_raining = input("Идёт ли дождь? (да/нет): ").lower() == "да"
has_umbrella = input("Есть ли зонт? (да/нет): ").lower() == "да"
if not is_raining:
print("☀️ Отличная погода для прогулки!")
elif has_umbrella:
print("🌂 Можно идти, зонт спасёт от дождя")
else:
print("🏠 Лучше остаться дома - дождь и нет зонта")
Сложные условия
Логические операторы можно комбинировать для создания сложной логики:
age = int(input("Введите возраст: "))
income = int(input("Введите доход в месяц (рубли): "))
credit_history = input("Хорошая ли кредитная история? (да/нет): ").lower()
# Условия для получения кредита
if (age >= 21 and age <= 65) and income >= 30000 and credit_history == "да":
print("✅ Кредит одобрен!")
# Определяем процентную ставку
if income >= 100000:
rate = 8.5
elif income >= 50000:
rate = 10.0
else:
rate = 12.5
print(f"Ваша ставка: {rate}% годовых")
elif age < 21 or age > 65:
print("❌ Кредит не одобрен: возрастные ограничения")
elif income < 30000:
print("❌ Кредит не одобрен: недостаточный доход")
else:
print("❌ Кредит не одобрен: плохая кредитная история")
Приоритет логических операторов
Важно понимать порядок выполнения:
not(самый высокий приоритет)andor(самый низкий приоритет)
# Эти выражения эквивалентны:
result1 = True or False and False # True or (False and False) = True
result2 = (True or False) and False # (True or False) and False = False
print(f"result1 = {result1}") # True
print(f"result2 = {result2}") # False
Для избежания путаницы используйте скобки для явного указания порядка операций!
Вложенные условия
Иногда нужно проверить одно условие, а внутри него — ещё одно. Это называется вложенными условиями. Представьте многоуровневую систему безопасности: сначала проверяется пропуск, потом отпечаток пальца, потом код доступа.
Система входа с логином и паролем
login = input("Введите логин: ")
if login == "admin":
print("Логин найден в системе")
password = input("Введите пароль: ")
if password == "12345":
print("✅ Вход выполнен успешно!")
print("🔓 Добро пожаловать в админ-панель")
action = input("Что хотите сделать? (просмотр/редактирование): ")
if action == "просмотр":
print("📋 Открыт режим просмотра данных")
elif action == "редактирование":
print("✏️ Открыт режим редактирования")
print("⚠️ Будьте осторожны с изменениями!")
else:
print("❓ Неизвестное действие")
else:
print("❌ Неверный пароль")
print("🔒 Доступ запрещён")
else:
print("❌ Пользователь не найден")
print("💡 Проверьте правильность логина")
Определение категории фильма
age = int(input("Введите ваш возраст: "))
if age >= 18:
print("🎬 Вам доступны все категории фильмов")
genre = input("Выберите жанр (ужасы/боевик/драма/комедия): ").lower()
if genre == "ужасы":
print("👻 Приятного просмотра! Не забудьте попкорн")
elif genre == "боевик":
print("💥 Приготовьтесь к экшену!")
elif genre == "драма":
print("🎭 Возможно, понадобятся салфетки")
elif genre == "комедия":
print("😄 Отличный выбор для поднятия настроения!")
else:
print("🤔 Интересный выбор жанра")
elif age >= 16:
print("⚠️ Доступны фильмы с возрастным ограничением 16+")
content = input("Готовы к серьёзному контенту? (да/нет): ").lower()
if content == "да":
print("🎥 Можете смотреть драмы и лёгкие боевики")
else:
print("😊 Рекомендуем комедии и приключения")
elif age >= 12:
print("👨👩👧👦 Доступны семейные фильмы и приключения")
else:
print("👶 Доступны только мультфильмы и детские фильмы")
Когда избегать глубокого вложения
Плохой пример (слишком много уровней):
# Трудно читать и понимать
if condition1:
if condition2:
if condition3:
if condition4:
if condition5:
print("Слишком много уровней!")
Хороший пример (используем elif и логические операторы):
# Более читаемый код
if condition1 and condition2 and condition3:
print("Лучше!")
elif condition1 and condition2:
print("Альтернативный вариант")
else:
print("По умолчанию")
Практические программы
Теперь применим полученные знания для создания полезных программ!
1. Калькулятор скидки в магазине
print("=== КАЛЬКУЛЯТОР СКИДКИ ===")
print()
# Получаем данные от пользователя
purchase_amount = float(input("Введите сумму покупки (руб.): "))
is_member = input("Есть ли карта лояльности? (да/нет): ").lower() == "да"
is_birthday = input("Сегодня ваш день рождения? (да/нет): ").lower() == "да"
print("\n--- Расчёт скидки ---")
# Базовая скидка по сумме
if purchase_amount >= 5000:
base_discount = 15
print(f"💰 Скидка за крупную покупку: {base_discount}%")
elif purchase_amount >= 2000:
base_discount = 10
print(f"💰 Скидка за покупку свыше 2000₽: {base_discount}%")
elif purchase_amount >= 1000:
base_discount = 5
print(f"💰 Скидка за покупку свыше 1000₽: {base_discount}%")
else:
base_discount = 0
print("💰 Базовая скидка не применяется")
# Дополнительные скидки
additional_discount = 0
if is_member:
member_discount = 5
additional_discount += member_discount
print(f"🏪 Скидка по карте лояльности: +{member_discount}%")
if is_birthday:
birthday_discount = 10
additional_discount += birthday_discount
print(f"🎂 Скидка в день рождения: +{birthday_discount}%")
# Общая скидка (максимум 30%)
total_discount = min(base_discount + additional_discount, 30)
discount_amount = purchase_amount * total_discount / 100
final_amount = purchase_amount - discount_amount
print("\n=== ИТОГ ===")
print(f"Сумма покупки: {purchase_amount:.2f}₽")
print(f"Общая скидка: {total_discount}%")
print(f"Размер скидки: {discount_amount:.2f}₽")
print(f"К оплате: {final_amount:.2f}₽")
print(f"Экономия: {discount_amount:.2f}₽")
# Мотивационное сообщение
if total_discount >= 20:
print("\n🎉 Отличная экономия! Приходите ещё!")
elif total_discount >= 10:
print("\n👍 Хорошая скидка получилась!")
else:
print("\n💡 Рассмотрите возможность оформить карту лояльности!")
2. Умное приветствие по времени суток
import datetime
print("=== УМНЫЙ ПОМОЩНИК ===")
print()
# Получаем текущее время
current_hour = datetime.datetime.now().hour
# Определяем время суток
if 5 <= current_hour < 12:
time_period = "утро"
greeting = "Доброе утро"
emoji = "🌅"
recommendation = "Время для завтрака и планирования дня!"
elif 12 <= current_hour < 17:
time_period = "день"
greeting = "Добрый день"
emoji = "☀️"
recommendation = "Самое продуктивное время для работы!"
elif 17 <= current_hour < 22:
time_period = "вечер"
greeting = "Добрый вечер"
emoji = "🌆"
recommendation = "Время для отдыха и общения с близкими!"
else:
time_period = "ночь"
greeting = "Добрая ночь"
emoji = "🌙"
recommendation = "Пора отдыхать. Завтра новый день!"
# Персональное приветствие
name = input("Как вас зовут? ")
print(f"\n{greeting}, {name}! {emoji}")
# Дополнительная информация в зависимости от времени
if time_period == "утро":
mood = input("Как настроение с утра? (отличное/нормальное/плохое): ").lower()
if mood == "отличное":
print("🎉 Прекрасно! День обещает быть удачным!")
elif mood == "нормальное":
print("👌 Хорошее начало. Чашка кофе поможет взбодриться!")
else:
print("💪 Не переживайте! Утро вечера мудренее.")
elif time_period == "день":
task = input("Чем занимаетесь? (работа/учеба/отдых): ").lower()
if task == "работа":
print("💼 Продуктивного рабочего дня!")
print("💡 Совет: делайте перерыв каждый час")
elif task == "учеба":
print("📚 Успехов в учёбе!")
print("🧠 Совет: повторение — мать учения")
else:
print("😎 Хорошего отдыха!")
elif time_period == "вечер":
plans = input("Есть планы на вечер? (да/нет): ").lower()
if plans == "да":
print("🎊 Отлично! Приятно провести время!")
else:
print("🛋️ Прекрасный повод для релакса дома")
print("📖 Может, время для хорошей книги или фильма?")
else: # ночь
if current_hour >= 2:
print("😴 Очень поздно! Берегите своё здоровье")
print("🌙 Рекомендую поспать")
else:
print("🌃 Тихий вечер — хорошее время для размышлений")
print(f"\n💡 {recommendation}")
print(f"🕐 Сейчас {current_hour}:00")
3. Система проверки доступа к сайту
print("=== СИСТЕМА ПРОВЕРКИ ДОСТУПА ===")
print("Добро пожаловать на наш сайт!")
print()
# Проверка возраста
age = int(input("Введите ваш возраст: "))
if age < 13:
print("❌ Извините, сайт предназначен для пользователей от 13 лет")
print("👶 Попросите родителей помочь вам")
elif age < 18:
print("⚠️ Вам доступен ограниченный контент")
parent_permission = input("Есть ли разрешение родителей? (да/нет): ").lower()
if parent_permission == "да":
print("👨👩👧👦 Хорошо, доступ к безопасному контенту разрешён")
access_level = "limited"
else:
print("❌ Для доступа нужно разрешение родителей")
access_level = "denied"
else:
print("✅ Вам доступен полный контент сайта")
access_level = "full"
# Если доступ не запрещён, проверяем согласие с правилами
if access_level != "denied":
print("\n--- ПРАВИЛА САЙТА ---")
print("1. Уважайте других пользователей")
print("2. Не публикуйте персональную информацию")
print("3. Соблюдайте авторские права")
print("4. Не распространяйте спам")
agreement = input("\nПринимаете правила? (да/нет): ").lower()
if agreement == "да":
print("\n🎉 ДОБРО ПОЖАЛОВАТЬ!")
if access_level == "full":
print("🔓 У вас полный доступ ко всем функциям:")
print(" • Создание контента")
print(" • Комментирование")
print(" • Личные сообщения")
print(" • Файлы и загрузки")
else:
print("👀 У вас ограниченный доступ:")
print(" • Просмотр контента")
print(" • Образовательные материалы")
print(" • Безопасные игры")
# Дополнительные настройки
notifications = input("\nХотите получать уведомления? (да/нет): ").lower()
if notifications == "да":
print("🔔 Уведомления включены")
else:
print("🔕 Уведомления отключены")
print("\n✨ Приятного пользования сайтом!")
else:
print("❌ Без принятия правил доступ к сайту невозможен")
print("💡 Вернитесь, когда будете готовы их принять")
4. Бонус: Игра «Угадай число»
import random
print("=== ИГРА: УГАДАЙ ЧИСЛО ===")
secret_number = random.randint(1, 100)
guess = int(input("Я загадал число от 1 до 100. Ваш вариант: "))
if guess == secret_number:
print("🎉 Поздравляю! Вы угадали с первой попытки!")
elif guess < secret_number:
print(f"📈 Моё число больше {guess}")
else:
print(f"📉 Моё число меньше {guess}")
print(f"Загаданное число: {secret_number}")
Лучшие практики работы с условными операторами
1. Используйте понятные имена переменных
Плохо:
if a > 18 and b == "y":
print("OK")
Хорошо:
if age > 18 and has_permission == "yes":
print("Доступ разрешён")
2. Избегайте глубокого вложения
Плохо:
if condition1:
if condition2:
if condition3:
print("Слишком сложно!")
Хорошо:
if condition1 and condition2 and condition3:
print("Намного лучше!")
3. Комментируйте сложную логику
# Проверяем право на льготы: пенсионер ИЛИ студент ИЛИ инвалид
if age >= 65 or is_student or has_disability:
discount = 50 # 50% скидка
4. Используйте константы для важных значений
ADULT_AGE = 18
SENIOR_AGE = 65
if age >= ADULT_AGE:
print("Взрослый пользователь")
elif age >= SENIOR_AGE:
print("Пенсионер")
Заключение
Поздравляем! Теперь ваши программы умеют принимать решения! Вы изучили:
- ✅ Базовые условные операторы
ifиelse - ✅ Множественный выбор с помощью
elif - ✅ Логические операторы
and,or,not - ✅ Вложенные условия для сложной логики
- ✅ Практические примеры из реальной жизни
Условные операторы Python — это основа для создания интерактивных и умных программ. Они позволяют коду реагировать на пользовательский ввод, проверять данные и выполнять разные действия в зависимости от ситуации.
Следующий шаг — изучение циклов! В нашей следующей статье мы научим программы выполнять повторяющиеся действия автоматически. Представьте: вместо того чтобы писать один и тот же код 100 раз, мы напишем его один раз и повторим 100 раз!
Упражнения для самостоятельной работы
Упражнение 1: Водительские права
Напишите программу, которая определяет, может ли человек получить водительские права. Условия:
- Возраст от 18 до 70 лет
- Хорошее зрение (да/нет)
- Отсутствие медицинских противопоказаний (да/нет)
Упражнение 2: Оценка фильма
Создайте программу-рекомендацию фильмов:
- Рейтинг выше 8 → «Шедевр! Обязательно посмотрите»
- Рейтинг 5-7 → «Неплохой фильм для вечера»
- Рейтинг ниже 5 → «Лучше выберите что-то другое»
Упражнение 3: Определение времени суток
Напишите программу, которая по введённому часу (0-23) определяет:
- 6-11: Утро
- 12-17: День
- 18-22: Вечер
- 23-5: Ночь
Удачи в программировании! 🚀

