if else в Python: Руководство по условным операторам

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

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

Базовая синтаксис if else

Оператор if else расширяет базовый оператор if, добавляя альтернативное действие, когда условие оценивается как False.

if condition:
    # code to execute if condition is True
    statement1
else:
    # code to execute if condition is False
    statement2

Ключевое слово else перехватывает всё, что не перехвачено условием if, действуя как "универсальный перехватчик" для сценариев, не охваченных оператором if. Python использует двоеточие (:) после обоих ключевых слов if и else, за которым следуют блоки кода с отступом.

Пример 1: Простой оператор if else

a = 200
b = 33

if b > a:
    print("b is greater than a")
else:
    print("b is not greater than a")
Вывод:
b is not greater than a

Since 33 is not greater than 200, the condition is false, so the else block executes.

Как работает if else

Оператор if else следует прямому потоку выполнения:

  1. Python оценивает условие после ключевого слова if
  2. Если условие равно True, выполняется первый блок с отступом, а блок else пропускается
  3. Если условие равно False, первый блок пропускается, а блок else выполняется
  4. После завершения любого блока выполнение продолжается с кодом после всей структуры if else

Пример: Проверка температуры

temperature = 15

if temperature > 20:
    print("It's warm outside")
else:
    print("It's cool outside")

print("Have a nice day!")
Вывод:
It's cool outside
Have a nice day!

Финальный оператор print выполняется независимо от того, какая ветвь была выбрана.

Сравнение значений с if else

Оператор if else обычно использует операторы сравнения для принятия решений на основе числовых или строковых значений.

Пример 1: Сравнение чисел

number = 7

if number % 2 == 0:
    print("The number is even")
else:
    print("The number is odd")
Вывод:
The number is odd

Пример 2: Сравнение строк

username = "admin"

if username == "admin":
    print("Welcome, Administrator!")
else:
    print("Welcome, User!")
Вывод:
Welcome, Administrator!

Пример 3: Проверка возраста

age = 16

if age >= 18:
    print("You are eligible to vote")
else:
    print("You are not eligible to vote yet")
Вывод:
You are not eligible to vote yet

Несколько операторов в блоках if else

Оба блока if и else могут содержать несколько операторов, пока они сохраняют согласованные отступы.

Пример:

score = 85

if score >= 90:
    print("Excellent performance!")
    print("You earned an A grade")
    grade = "A"
    bonus_points = 10
else:
    print("Good effort!")
    print("Keep working hard")
    grade = "B"
    bonus_points = 5

print(f"Your grade is: {grade}")
print(f"Bonus points: {bonus_points}")
Вывод:
Good effort!
Keep working hard
Your grade is: B
Bonus points: 5

Однострочный if else (Тернарный оператор)

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

Стандартный формат:

age = 20

if age >= 18:
    status = "adult"
else:
    status = "minor"

print(status)

Однострочный формат (Тернарный оператор):

age = 20
status = "adult" if age >= 18 else "minor"
print(status)
Вывод:
adult

More Examples:

# Example 1: Maximum of two numbers
a = 10
b = 20
max_value = a if a > b else b
print(f"Maximum: {max_value}")  # Output: Maximum: 20

# Example 2: Pass/Fail determination
marks = 75
result = "Pass" if marks >= 50 else "Fail"
print(result)  # Output: Pass

# Example 3: Sign determination
number = -5
sign = "Positive" if number > 0 else "Non-positive"
print(sign)  # Output: Non-positive

Этот компактный синтаксис особенно полезен для простых присваиваний и быстрых условий.

Объединение условий с логическими операторами

Вы можете использовать операторы and, or и not для создания сложных условий в операторах if else.

Пример 1: Использование оператора and

age = 25
has_license = True

if age >= 18 and has_license:
    print("You can drive")
else:
    print("You cannot drive")
Вывод:
You can drive

Пример 2: Использование оператора or

day = "Saturday"

if day == "Saturday" or day == "Sunday":
    print("It's the weekend!")
else:
    print("It's a weekday")
Вывод:
It's the weekend!

Пример 3: Использование оператора not

is_raining = False

if not is_raining:
    print("You don't need an umbrella")
else:
    print("Take an umbrella")
Вывод:
You don't need an umbrella

Пример 4: Проверка диапазона температуры

temperature = 35

if temperature > 30 and temperature < 40:
    print("It's a hot day!")
else:
    print("Temperature is moderate")
Вывод:
It's a hot day!

Вложенные операторы if else

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

Пример 1: Базовая вложенность

number = 10

if number >= 0:
    if number == 0:
        print("Number is zero")
    else:
        print("Number is positive")
else:
    print("Number is negative")
Вывод:
Number is positive

Пример 2: Классификация оценок с вложенностью

marks = 85

if marks >= 50:
    print("You passed!")
    if marks >= 90:
        print("Grade: A - Excellent!")
    else:
        print("Grade: B - Good job!")
else:
    print("You failed")
    print("Please retake the exam")
Вывод:
You passed!
Grade: B - Good job!

Пример 3: Многоуровневая аутентификация пользователя

username = "admin"
password = "secret123"

if username == "admin":
    if password == "secret123":
        print("Access granted")
        print("Welcome to admin panel")
    else:
        print("Incorrect password")
else:
    print("User not found")
Вывод:
Access granted
Welcome to admin panel

Хотя вложенность мощна, чрезмерная вложенность может сделать код труднее для чтения—рассмотрите использование elif для более чистой логики с несколькими условиями.

Проверка пользовательского ввода с if else

Оператор if else необходим для проверки ввода и обработки ошибок.

Пример 1: Проверка пустой строки

username = ""

if len(username) > 0:
    print(f"Welcome, {username}!")
else:
    print("Error: Username cannot be empty")
Вывод:
Error: Username cannot be empty

Пример 2: Проверка длины пароля

password = "abc"

if len(password) >= 8:
    print("Password is valid")
else:
    print("Password must be at least 8 characters")
Вывод:
Password must be at least 8 characters

Пример 3: Проверка числового диапазона

age = 150

if age > 0 and age <= 120:
    print(f"Age {age} is valid")
else:
    print("Invalid age entered")
Вывод:
Invalid age entered

Пример 4: Проверка членства в списке

allowed_users = ["alice", "bob", "charlie"]
current_user = "david"

if current_user in allowed_users:
    print("Access granted")
else:
    print("Access denied")
Вывод:
Access denied

Расширение с elif

Хотя эта страница сосредоточена на if else, вы можете добавить elif (else if) между if и else для последовательной проверки нескольких условий.

temperature = 22

if temperature > 30:
    print("It's hot outside!")
elif temperature > 20:
    print("It's warm outside")
elif temperature > 10:
    print("It's cool outside")
else:
    print("It's cold outside!")
Вывод:
It's warm outside

Оператор else должен идти последним и действует как значение по умолчанию, когда ни одно другое условие не истинно.

Распространённые случаи использования

Случай использования 1: Система входа

stored_password = "python123"
entered_password = "python123"

if entered_password == stored_password:
    print("Login successful")
else:
    print("Invalid password")
Вывод:
Login successful

Случай использования 2: Калькулятор скидок

purchase_amount = 120

if purchase_amount >= 100:
    discount = purchase_amount * 0.10
    print(f"You get a 10% discount: ${discount}")
else:
    print("No discount available")
Вывод:
You get a 10% discount: $12.0

Случай использования 3: Система сдачи/не сдачи

exam_score = 45
passing_score = 50

if exam_score >= passing_score:
    print("Congratulations! You passed")
else:
    print(f"Sorry, you need {passing_score - exam_score} more points to pass")
Вывод:
Sorry, you need 5 more points to pass

Случай использования 4: Проверка расширения файла

filename = "document.pdf"

if filename.endswith(".pdf"):
    print("This is a PDF file")
else:
    print("This is not a PDF file")
Вывод:
This is a PDF file

Случай использования 5: Проверка високосного года

year = 2024

if year % 4 == 0:
    print(f"{year} is a leap year")
else:
    print(f"{year} is not a leap year")
Вывод:
2024 is a leap year

Распространённые ошибки, которых следует избегать

Ошибка 1: Отсутствие двоеточия

# Wrong
if number > 0
    print("Positive")
else
    print("Not positive")

# Correct
if number > 0:
    print("Positive")
else:
    print("Not positive")

Ошибка 2: Несогласованные отступы

# Wrong
if age >= 18:
    print("Adult")
else:
  print("Minor")  # Different indentation

# Correct
if age >= 18:
    print("Adult")
else:
    print("Minor")

Ошибка 3: Использование elif после else

# Wrong
if x > 0:
    print("Positive")
else:
    print("Not positive")
elif x < 0:  # SyntaxError
    print("Negative")

# Correct
if x > 0:
    print("Positive")
elif x < 0:
    print("Negative")
else:
    print("Zero")

Ошибка 4: Пустые блоки кода

# Wrong
if condition:
    # Code here
else:
    # This will cause an error

# Correct - use pass for placeholder
if condition:
    print("Condition met")
else:
    pass  # Do nothing

Используйте pass для заполнителя

Лучшие практики

Практика 1: Держите условия простыми и читаемыми

# Less readable
if not (age < 18 or not has_permission):
    print("Allowed")

# More readable
if age >= 18 and has_permission:
    print("Allowed")

Практика 2: Используйте осмысленные имена переменных

# Poor
if x > 100:
    y = True

# Better
if purchase_amount > 100:
    eligible_for_discount = True

Практика 3: Обрабатывайте оба пути явно

# When both outcomes matter, use if else
file_exists = True

if file_exists:
    print("Loading file...")
else:
    print("Creating new file...")

Когда важны оба результата, используйте if else

Практика 4: Избегайте глубокой вложенности

# Harder to read
if condition1:
    if condition2:
        if condition3:
            action()

# Better - use elif or logical operators
if condition1 and condition2 and condition3:
    action()

Попробуйте сами

Экспериментируйте с операторами if else

Готово
main.py
Консоль вывода 0 ms
// Нажмите "Запустить код" чтобы увидеть результаты

Связанные темы

Часто задаваемые вопросы

В чём разница между if и if else в Python?

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

Могу ли я иметь if else без elif?

Да, if else отлично работает без elif. Ключевое слово elif нужно только когда вы хотите последовательно проверить несколько условий.

Нужны ли скобки вокруг условий в операторах if else в Python?

Нет, скобки необязательны. И if (x > 5):, и if x > 5: действительны, хотя последний чаще используется в Python.

Могу ли я использовать if else в одной строке?

Да, Python поддерживает тернарный оператор: result = "yes" if condition else "no". Это полезно для простых присваиваний.

Что произойдёт, если я забуду сделать отступ кода в блоке else?

Python вызовет IndentationError, потому что требует согласованные отступы для определения блоков кода.

Может ли else появиться сам по себе без if?

Нет, else всегда должен быть в паре с предшествующим оператором if. Вы не можете использовать else независимо.