Приветствую, давай рассмотрим if и else в Python. Условные операторы if и else в Python позволяют программе принимать решения. Блок if выполняет код, если условие истинно, а else — если оно ложно. Ключевой особенностью синтаксиса являются отступы, которые определяют, какой код относится к какому условию, в отличие от фигурных скобок в других языках. Материал в статье представлен в видеоформате с ментором Python университета JavaRush и более подробно в текстовой версии.

Помните, как вы первый раз пришли на новую работу? Заходите, а HR такой: "Если у тебя есть пропуск — иди налево к лифтам, если нет — топай направо к ресепшену". Вот это и есть условные операторы в программировании! Они дают твоему коду мозги, чтобы он мог решать, что делать, в зависимости от ситуации.

if и else в Python это как руль для машины. Без них твой код это просто тачка, которая едет только прямо и никуда не сворачивает. В этой статье я разберу if, else по косточкам: от самых простых случаев до всяких хитростей, которые юзают продвинутые кодеры.

Этот гайд подойдёт и тем, кто только начинает ковыряться в Python, и тем, кто уже что-то умеет, но хочет подтянуть знания или найти новые фишки для своих задач.

Видеоформат Часть 1:

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

Условные операторы в Python — это как развилки на дороге: программа смотрит на условие и решает, куда ей дальше. Представьте, что вы пишете приложение для доставки еды. Если заказ сделан до десяти вечера — принимаем, а если уже ночь на дворе выводим: "Сори, кухня закрыта".

В Python для этого есть три главных слова:

if — проверяет, правда ли условие, и если да, то делает, что сказано.

else — срабатывает, когда в if всё ложь.

Кстати, в Python есть одна фишка, которая вначале бесила: отступы. Это не просто для красоты — они реально решают, какой код к какому if относится. В других языках для этого фигурные скобки используют, а тут пробелы. Помню, как я разок забыл отступ, и программа выдала такую дичь, что я час сидел и не мог разобраться.

Python
if условие:
    # Этот код выполнится, если условие истинно
    pass

Синтаксис и базовый пример if-оператора

Начнем с простейшего примера. Допустим, вы создаете программу для банка, которая проверяет, может ли клиент снять деньги с карты:

Python
balance = 1500
withdrawal = 1000

if balance >= withdrawal:
    print("Операция разрешена. Выдаем деньги")
    balance = balance - withdrawal
    print(f"Остаток на счете: {balance}")

В этом примере программа проверяет, достаточно ли денег на счете. Если условие balance >= withdrawal истинно, выполняется код в блоке с отступом.

Важный момент: Python использует концепцию "truthiness" и "falsiness". Некоторые значения считаются ложными даже без явного сравнения:

Python
# Ложные значения (falsy)
if 0:
    print("Не выполнится")

if "":
    print("Пустая строка - тоже не выполнится")

if []:
    print("Пустой список - не выполнится")

# Истинные значения (truthy)
if 1:
    print("Выполнится!")

if "Привет":
    print("Непустая строка - выполнится!")

if [1, 2, 3]:
    print("Непустой список - выполнится!")

If...Else: Двустороннее принятие решений

В реальной жизни у нас редко бывает только один вариант развития событий. Обычно есть план А и план Б. То же самое в программировании — часто нужно предусмотреть альтернативу.

Вернемся к примеру с банкоматом, но теперь добавим обработку случая, когда денег недостаточно:

Python
balance = 500
withdrawal = 1000

if balance >= withdrawal:
    print("Операция разрешена. Выдаем деньги")
    balance = balance - withdrawal
else:
    print("Недостаточно средств на счете")
    print(f"Ваш баланс: {balance}, запрошенная сумма: {withdrawal}")

Блок else выполняется только тогда, когда условие в if оказывается ложным. Это гарантирует, что программа обработает любую ситуацию.

Практический пример — проверка возраста для покупки алкоголя:

Python
age = int(input("Введите ваш возраст: "))

if age >= 21:
    print("Добро пожаловать! Вы можете совершить покупку")
else:
    print("Извините, продажа алкоголя лицам младше 21 года запрещена")
Видеоформат Часть 2:

Вложенные If-операторы

Иногда логика программы требует проверки условий внутри других условий. Это как матрешка — условие внутри условия. Вложенные if Python позволяют создавать сложную логику.

Пример — система скидок в интернет-магазине:

Python
customer_type = "premium"
order_amount = 150
is_birthday = True

if customer_type == "premium":
    print("Клиент категории Premium")
    
    if order_amount >= 100:
        discount = 0.15  # 15% скидка
        print("Применена скидка 15% за крупную покупку")
        
        if is_birthday:
            discount += 0.05  # дополнительная скидка в день рождения
            print("Дополнительная скидка 5% в честь дня рождения!")
    else:
        discount = 0.10  # 10% скидка для премиум-клиентов
        print("Применена скидка 10% для Premium-клиента")
        
else:
    if order_amount >= 200:
        discount = 0.05  # 5% скидка для крупных заказов
        print("Применена скидка 5% за крупную покупку")
    else:
        discount = 0  # без скидки
        print("Скидка не применяется")

final_amount = order_amount * (1 - discount)
print(f"К оплате: {final_amount:.2f} руб.")

Однако будьте осторожны — слишком глубокая вложенность делает код сложным для понимания. Если вложенность превышает 3-4 уровня, стоит подумать о рефакторинге кода.

Логические операторы в условных конструкциях

Логические операторы Python позволяют объединять несколько условий в одном выражении. Это как составление сложных предложений в русском языке с союзами "и", "или", "не".

Оператор AND

Оператор and возвращает True только когда ОБА условия истинны:

Python
username = "admin"
password = "secret123"
is_logged_in = False

if username == "admin" and password == "secret123":
    is_logged_in = True
    print("Добро пожаловать в систему!")
else:
    print("Неверные учетные данные")

Оператор OR

Оператор or возвращает True, если истинно ХОТЯ БЫ одно условие:

Python
day = "Saturday"
is_holiday = True

if day == "Saturday" or day == "Sunday" or is_holiday:
    print("Сегодня выходной!")
else:
    print("Рабочий день")

Оператор NOT

Оператор not инвертирует значение условия:

Python
email = "user@example.com"
is_valid_email = "@" in email and "." in email

if not is_valid_email:
    print("Введите корректный email адрес")
else:
    print("Email принят")

Короткозамкнутое вычисление (Short-circuit evaluation)

Python умен — он не проверяет второе условие, если результат уже ясен из первого. Это экономит время выполнения:

Python
x = 0
y = 10

# Python не будет проверять y > 5, потому что x уже равно 0
if x > 0 and y > 5:
    print("Оба условия истинны")

# Python не будет проверять второе условие, потому что первое уже истинно
if x == 0 or y > 100:
    print("Хотя бы одно условие истинно")

Однострочные If и тернарный оператор Python

Для простых условий Python предлагает компактный синтаксис. Тернарный оператор Python позволяет записать условие в одну строку:

Python
# Обычная запись
age = 20
if age >= 18:
    status = "adult"
else:
    status = "minor"

# Тернарный оператор (однострочный if Python)
status = "adult" if age >= 18 else "minor"
print(status)  # adult

Однако не стоит злоупотреблять тернарными операторами. Если логика сложная, лучше использовать обычные if-else для читаемости кода.

Использование If с циклами и функциями

Условные операторы Python часто работают в связке с циклами и функциями, создавая мощные инструменты для обработки данных.

If с циклами

Python
# Фильтрация списка email адресов
emails = ["user@example.com", "invalid-email", "admin@site.org", "", "test@domain.com"]
valid_emails = []

for email in emails:
    if "@" in email and "." in email and len(email) > 5:
        valid_emails.append(email)
    else:
        print(f"Пропущен некорректный email: {email}")

print("Валидные email адреса:", valid_emails)

# Поиск в списке с условием
products = [
    {"name": "iPhone", "price": 80000, "category": "phones"},
    {"name": "MacBook", "price": 150000, "category": "laptops"},
    {"name": "Samsung Galaxy", "price": 60000, "category": "phones"}
]

print("Телефоны дешевле 70000:")
for product in products:
    if product["category"] == "phones" and product["price"] < 70000:
        print(f"- {product['name']}: {product['price']} руб.")

If внутри функций

Python
def grade_students(students_scores):
    """Функция для выставления оценок студентам"""
    graded_students = []

    for student, score in students_scores.items():
        if score >= 90:
            grade = "A"
            status = "Отличник"
        else:
            if score >= 80:
                grade = "B"
                status = "Хорошист"
            else:
                if score >= 70:
                    grade = "C"
                    status = "Троечник"
                else:
                    grade = "F"
                    status = "Требуется пересдача"

        graded_students.append({
            "name": student,
            "score": score,
            "grade": grade,
            "status": status
        })

    return graded_students

# Использование функции
scores = {
    "Анна": 95,
    "Иван": 78,
    "Мария": 88,
    "Петр": 65
}

results = grade_students(scores)
for student in results:
    print(f"{student['name']}: {student['score']} баллов - {student['grade']} ({student['status']})")

Частые ошибки и как их избежать

За годы обучения программированию на Python я видел одни и те же ошибки у новичков. Вот самые распространенные из них:

1. Неправильные отступы

Python
# НЕПРАВИЛЬНО
if 5 > 3:
print("Это вызовет ошибку IndentationError")

# ПРАВИЛЬНО
if 5 > 3:
    print("Теперь все работает")

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

Python
# НЕПРАВИЛЬНО - присваивание вместо сравнения
x = 10
if x = 5:  # SyntaxError!
    print("Ошибка")

# ПРАВИЛЬНО
if x == 5:
    print("Правильное сравнение")

3. Сложные вложенные условия

Python
# ПЛОХО - трудно читать и понимать
if user.is_authenticated():
    if user.has_permission('read'):
        if document.is_available():
            if user.subscription.is_active():
                if not document.is_private() or user.id == document.owner_id:
                    return document.content

# ЛУЧШЕ - используйте функции для разбиения логики
def can_access_document(user, document):
    if not user.is_authenticated():
        return False
    
    if not user.has_permission('read'):
        return False
    
    if not document.is_available():
        return False
    
    if not user.subscription.is_active():
        return False
    
    if document.is_private() and user.id != document.owner_id:
        return False
    
    return True

if can_access_document(user, document):
    return document.content

4. Неправильное понимание truthy/falsy

Python
# Потенциальная ошибка
items = []
if items:  # Пустой список - falsy
    print("У нас есть товары")
else:
    print("Товаров нет")  # Выполнится это

# Более явная проверка
if len(items) > 0:
    print("У нас есть товары")
else:
    print("Товаров нет")

Заключение

if и else в Python — это как основа основ, без них ни один проект не взлетит. Мы прошлись по всему, что нужно знать про условные операторы: от простого if до всяких замороченных вложенных конструкций и хитрых тернарных операторов.

Вот что стоит заучить:

  • Отступы — это святое в Python, не лажайте с пробелами.
  • Юзайте and, or, not, чтобы склеивать условия.
  • Не забывайте про штуки типа truthy и falsy — они реально выручают.
  • Не закапывайтесь в кучу вложенных условий, а то код станет как лабиринт.
  • Тернарный оператор — это как лайфхак для простых проверок.

Теперь пора засунуть руки в код! Напишите свою программку с if и else. Начните с чего-то лёгкого, типа проверки возраста для входа в клуб, а потом усложняйте. Я сам так учился — писал простенькие штуки, ломал их, психовал, но в итоге всё в голове уложилось.

Если вы только начинаете кодить, не зацикливайтесь только на условиях. Погрузитесь в циклы, функции, списки, словари — это всё база. А если хотите реально прокачаться в Python и стать профи, зацените интерактивный курс на JavaRush. Там куча задачек и проектов, которые прям вдалбливают материал.

А для тех, кто мечтает сделать кодинг своей профессией и быстро вырасти до миддла, гляньте Python-университет от JavaRush. Это прям убойная программа с менторами, которая за 12 месяцев превратит вас в полноценного специалиста.

Удачи в кодинге! Помните: без практики всё это — просто слова.

Что еще почитать: