Оператор 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 следует прямому потоку выполнения:
- Python оценивает условие после ключевого слова
if - Если условие равно
True, выполняется первый блок с отступом, а блокelseпропускается - Если условие равно
False, первый блок пропускается, а блокelseвыполняется - После завершения любого блока выполнение продолжается с кодом после всей структуры
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
// Нажмите "Запустить код" чтобы увидеть результаты
Связанные темы
Часто задаваемые вопросы
В чём разница между 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 независимо.