okpython.net
Все для начинающих

Условная инструкция if/else в Python

Общий формат инструкции if в Python

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

 if <Условие №1>:
    <Блок инструкций №1>
 elif <Условие №2>:
    <Блок инструкций №2>
 ...
 else:
    <Запасной блок инструкций>

Если первое условие истинно (результатом вычислений будет True), то выполняется первый блок инструкций. Если первое условие ложно (результатом вычислений будет False), то проверяются по-очереди все условия необязательных блоков elif и, если найдется истинное условие, то выполняется соответствующий этому условию блок инструкций. Если все дополнительные условия окажутся ложными, выполнится запасной блок инструкций else. Обязательным является только блок инструкций if, остальные блоки могут быть опущены. При этом разрешается использовать любое количество блоков elif, но только один блок else.

Простейшая форма инструкции if в Python

Давайте для наглядности начнем с простейшей условной инструкции. Она содержит только основную часть if, в которой вычисляется значение единственного условного выражения и по результатам вычисления принимается решение – если конечный результат имеет значение True, интерпретатор выполняет указанный фрагмент кода, а если конечный результат имеет значение False, интерпретатор пропускает данный фрагмент кода и начинает выполнять инструкцию, следующую за текущей условной инструкцией (см. пример №1).

Код Результат pythonCodes
# Определяем польз. функцию.
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).

Код Результат pythonCodes
# Определяем польз. функцию.
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).

Код Результат pythonCodes
# Определяем польз. функцию.
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).

Код Результат pythonCodes
# Инициализируем переменную.
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).

Код Результат pythonCodes
# Инициализируем переменные.
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. Исправьте в коде три ошибки. Показать решение.

Условие pythonCodes
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'
Условие Решение pythonCodes
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» нашего сборника задач и упражнений.

Быстрый переход к другим страницам