Условная инструкция if/else в Python
- Общий формат инструкции if
- Простейшая форма инструкции if
- Управляющая конструкция if/else
- Ключевое слово elif
- Трехместное выражение if/else
- Краткие итоги параграфа
- Вопросы и задания для самоконтроля
Общий формат инструкции if в Python
Как и в большинстве других языков программирования в Python присутствует условная инструкция if, которая в общем случае имеет следующий формат записи:
if <Условие №1>:
<Блок инструкций №1>
elif <Условие №2>:
<Блок инструкций №2>
...
else:
<Запасной блок инструкций>
Если первое условие истинно (результатом вычислений будет True), то выполняется первый блок инструкций. Если первое условие ложно (результатом вычислений будет False), то проверяются по-очереди все условия необязательных блоков elif и, если найдется истинное условие, то выполняется соответствующий этому условию блок инструкций. Если все дополнительные условия окажутся ложными, выполнится запасной блок инструкций else. Обязательным является только блок инструкций if, остальные блоки могут быть опущены. При этом разрешается использовать любое количество блоков elif, но только один блок else.
Простейшая форма инструкции if в Python
Давайте для наглядности начнем с простейшей условной инструкции. Она содержит только основную часть if, в которой вычисляется значение единственного условного выражения и по результатам вычисления принимается решение – если конечный результат имеет значение True, интерпретатор выполняет указанный фрагмент кода, а если конечный результат имеет значение False, интерпретатор пропускает данный фрагмент кода и начинает выполнять инструкцию, следующую за текущей условной инструкцией (см. пример №1).
# Определяем польз. функцию.
def my_div(x, y):
# Осуществляем проверку условного выражения.
if y == 0:
# Выходим из функции и возвращаем None.
return None
# Возвращаем частное.
return x/y
# Вызываем функцию и публикуем результаты.
print(my_div(2, 4))
print(my_div(2, 0))
0.5
None
Пример №1. Условная инструкция if и ее синтаксис.
Отметим, что в теле инструкции if разрешается использовать как другие вложенные инструкции if, так и вложенные управляющие конструкции других видов, например, циклов или обработчиков ошибок, что значительно повышает возможности организации условного выполнения различных частей программы.
Управляющая конструкция if/else в Python
Если в зависимости от результата проверки условного выражения нужно сделать выбор и выполнить только один из двух допустимых наборов инструкций, инструкция if может быть расширена при помощи ключевого слова else, которое в случае, когда значение условия равно False, позволяет выполнить альтернативный набор инструкций (см. пример №2).
# Определяем польз. функцию.
def my_func(x, y):
# Проверим равенство чисел.
if x == y:
print(x, 'равно', y, end='\n\n')
else:
print(x, 'не равно', y,)
# Вызываем функцию.
my_func(1.34, 1.43)
my_func(3, 3.0)
1.34 не равно 1.43
3 равно 3
Пример №2. Расширение инструкции if за счет ключевого слова else.
Обратите внимание, что в нашем примере ложный результат имеет ценность для программы и не должен быть потерян. Поэтому для его обработки мы и добавили в условную инструкцию блок else.
Ключевое слово elif в Python
Когда требуется выполнить выбор не из двух, а из нескольких подходящих вариантов, инструкция if может быть расширена при помощи требуемого количества ключевых слов elif, которые по сути служат для объединения двух соседних инструкций if (см. пример №3).
# Определяем польз. функцию.
def my_price(f):
# Осуществляем проверку условных выражений.
if f == 'яблоки':
m = '1.9 руб/кг.'
elif f == 'апельсины':
m = '3.4 руб/кг.'
elif f == 'бананы':
m = '2.5 руб/кг.'
elif f == 'груши':
m = '2.8 руб/кг.'
else:
m = 'Нет в продаже!'
# Возвращаем результат.
return m
# Вызываем функцию и публикуем результаты.
print(my_price('апельсины'))
print(my_price('груши'))
print(my_price('мандарины'))
3.4 руб/кг.
2.8 руб/кг.
Нет в продаже!
Пример №3. Расширение инструкции if за счет ключевых слов elif.
Как видим, при использовании ключевых слов elif выполнение альтернативного блока инструкций происходит лишь тогда, когда соответствующее блоку условие имеет значение True, а условные выражения всех предыдущих блоков в результате вычислений дают False. В случае отсутствия совпадений, выполняется набор инструкций дополнительного блока else.
Здесь будет уместным заметить, что в Python отсутствует инструкция switch, которая может быть вам знакома по другим языкам программирования (например, PHP). Ее роль берет на себя конструкция if/elif/else, а также ряд дополнительных приемов программирования, иммитирующих поведение этой инструкции.
Трехместное выражение if/else в Python
Как и в случае с инструкцией присваивания, использовать условные инструкции в выражениях запрещается. Но иногда ситуации бывают настолько простые, что использование многострочных условных инструкций становится нецелесообразным. Именно по этим причинам в Python была введена специальная конструкция, называемая трехместным выражением if/else или тернарным оператором if/else, которая может использоваться непосредственно в выражениях (см. пример №4).
# Инициализируем переменную.
x = 5
# Составляем условие.
if x == 0:
s = False
else:
s = True
# Выводим результат.
print(s)
# Используем выражение if/else.
s = True if x != 0 else False
# Получим тот же результат.
print(s)
True
True
Пример №4. Использование трехместного выражения if/else (часть 1).
Таким образом, трехместное выражение if/else дает тот же результат, что и предыдущая четырехстрочная инструкция if, но выглядит выражение проще. В общем виде его можно представить как A = Y if X else Z. Здесь, как и в предыдущей инструкции, интерпретатор обрабатывает выражение Y, только если условие X имеет истинное значение, а выражение Z обрабатывается, только если условие X имеет ложное значение. То есть вычисления здесь также выполняются по сокращенной схеме (см. пример №5).
# Инициализируем переменные.
x, y = 0, 3
res = True if x > y else False
# Выведет False.
print(res)
res = y/x if x != 0 else 'Division by zero!'
# Выведет 'Division by zero!'.
print(res)
res = True if 'a' in 'abc' else False
# Выведет True.
print(res)
False
Division by zero!
True
Пример №5. Использование трехместного выражения if/else (часть 2).
Рассмотренные нами примеры достаточно просты, поэтому получившиеся трехместные выражения легко поместились в одну строку. В более сложных случаях, когда выражения получаются громоздкими и читабельность кода падает, лучше не мудрить, а использовать полноценную условную инструкцию if/else.
Краткие итоги параграфа
- Условная инструкция if/elif/else дает нам возможность изменить ход программы за счет выполнения только одного определенного блока инструкций, соответствующего первому попавшемуся ключевому слову с истинным условием. Обязательным является только ключевое слово if, остальные ключевые слова конструкции могут быть опущены. При этом разрешается использовать любое количество ключевых слов elif, но только одно ключевое слово else.
- Так как в Python использовать инструкции непосредственно в выражениях не разрешается, для проверки условий в них было введено специальное трехместное выражение if/else. Его еще называют тернарным оператором if/else. В общем виде конструкцию можно представить как A = Y if X else Z. Вычисления здесь выполняются по сокращенной схеме: интерпретатор обрабатывает выражение Y, только если условие X истинно, а выражение Z обрабатывается, только если условие X ложно.
Вопросы и задания для самоконтроля
1. Какие из частей условной инструкции if/elif/else не являются обязательными? Показать решение.
Ответ. Обязательным является только блок if, блоки elif и else используются по необходимости.
2. Как в языке Python можно оформить множественное ветвление? Показать решение.
Ответ. Прямым способом оформления множественного ветвления следует считать использование инструкции if с несколькими блоками elif, т.к. в Python отсутствует инструкция switch, которая присутствует в некоторых других языках программирования (например, PHP).
3. Какой из представленных форматов соответствует условной инструкции: if/elseif/else, if/elif/else, A = Y if X else Z? Показать решение.
Ответ. if/elif/else.
4. Исправьте в коде три ошибки. Показать решение.
a = 3547
b = 155
if a/b > 25
print('a/b > 25')
else if a/b > 15:
print('a/b > 15')
else:
print('a/b <= 15'
a = 3547
b = 155
if a/b > 25
print('a/b > 25')
else if a/b > 15:
print('a/b > 15')
else:
print('a/b <= 15'
a = 3547
b = 155
# Не забываем про двоеточие.
if a/b > 25:
print('a/b > 25')
# Правильно elif.
elif a/b > 15:
print('a/b > 15')
else:
# А где закрывающая скобка?
print('a/b <= 15')
5. Дополнительные тесты по теме расположены в разделе «Условная инструкция if/elif/else» нашего сборника тестов.
6. Дополнительные упражнения и задачи по теме расположены в разделе «Условная инструкция if/elif/else» нашего сборника задач и упражнений.
Быстрый переход к другим страницам
- Инструкции присваивания в Python
- Условная инструкция if/else в Python
- Циклы for и while в Python
- К содержанию учебника