условные операторы PythonФото: Pexels

Содержание статьи

Введение

Помните, как в наших прошлых статьях мы учились создавать переменные и работать с данными? Мы научили Python запоминать информацию и выполнять простые вычисления. Но сегодня пришло время сделать наши программы по-настоящему умными — научить их принимать решения!

Представьте себя утром перед выходом из дома. Вы смотрите в окно и думаете: «Если на улице дождь, возьму зонт. Если солнечно — надену солнечные очки. А если холодно — куртку потеплее». Именно так же работает человеческий мозг — анализирует ситуацию и принимает решения на основе условий.

Сегодня мы научим наши программы делать то же самое! Условные операторы Python позволяют коду «думать» и выбирать разные пути выполнения в зависимости от обстоятельств. Это фундаментальная концепция программирования, которая превращает простые скрипты в интеллектуальные приложения.

В конце этой статьи ваши программы смогут:

  • Проверять возраст пользователя перед показом контента
  • Рассчитывать скидки в интернет-магазине
  • Определять время суток и приветствовать пользователя соответственно
  • Создавать простые игры с логикой принятия решений

Готовы сделать ваш код умнее? Поехали!

Что такое условный оператор

Условный оператор — это инструкция, которая говорит программе: «Если выполняется определённое условие, сделай это, иначе — сделай то». В Python основным условным оператором является if (с английского «если»).

Давайте рассмотрим самый простой пример:

age = 18

if age >= 18:
    print("Доступ разрешён!")

Что здесь происходит?

  1. Мы создали переменную age со значением 18
  2. Проверили условие: возраст больше или равен 18
  3. Если условие истинно (а оно истинно, ведь 18 >= 18), выполняется код с отступом
  4. На экран выводится «Доступ разрешён!»

Обратите внимание на важные элементы синтаксиса:

  • Ключевое слово 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("💪 Не сдавайтесь, попробуйте ещё раз!")

Важно понимать логику выполнения:

  1. Python проверяет условия сверху вниз
  2. Как только одно из условий становится истинным, выполняется соответствующий блок кода
  3. Все остальные условия пропускаются

Например, если score = 95, программа:

  1. Проверяет 95 >= 90 — истина! Выполняется блок кода
  2. Остальные условия (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("❌ Кредит не одобрен: плохая кредитная история")

Приоритет логических операторов

Важно понимать порядок выполнения:

  1. not (самый высокий приоритет)
  2. and
  3. or (самый низкий приоритет)
# Эти выражения эквивалентны:
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: Ночь

Удачи в программировании! 🚀

От admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *