Условные выражения, конструкция if в Python

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

Логические операторы

Оператор – это знак или ключевое слово, которое выполняет определенное действие с теми переменными, которые стоят по левую и правую сторону. Такие переменные называются операндами. 

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

  1. a == b. Означает равенство двух операндов.
  2. a != b. Используется для проверки того, являются ли два операнда равными. Только значение True возвращается только тогда, когда оказывается, что операнд 1 не равняется операнду 2. 
  3. a < b. Эквивалентно математическому знаку «меньше». Если оказывается, что первый операнд (a в нашем шаблоне) меньше второго (b), то возвращается значение True.
  4. a <= b. Говорит о том, что первый операнд является или меньшим, чем второй или равным ему.
  5. a > b. Эквивалентен математическому знаку «больше». 
  6. a >= b. Противоположный оператору, который находится в пункте 4 этого списка. Означает одно из двух условий:
    1. Первый операнд больше второго.
    2. Первый операнд такой же, как второй.

В обоих случаях возвращается значение True, если условие оказывается истинным. Все эти логические операторы могут использоваться для выполнения определенных действий в программах. Но наиболее часто они применяются в выражениях if. Давайте рассмотрим, что это такое и с чем их едят.

Что такое if-выражение?

If-выражение – это конструкция Python, которая предназначена для выполнения определенных действий лишь при соблюдении определенных условий. Она еще часто называется оператором управления, поскольку оператор if самостоятельно принимает решения исходя из имеющейся ситуации. 

Благодаря if-выражениям программа может выполнять сложные действия. Гораздо сложнее, чем простой вывод строки на экран. 

Слово if переводится с английского языка, как Если. Оно очень хорошо отражает эту конструкцию. 

Давайте для наглядности рассмотрим такой пример. 

a = 33  

b = 200  

if b > a:  

    print("b больше, чем a")

Если перевести этот алгоритм на человеческий язык, получится что-то типа такого:

  • a = 33.
  • b = 200.
  • Если a меньше b, то тогда вывести соответствующее предложение на экран консоли.

С введенными нами данными, эта надпись появится на экране, поскольку 200 больше, чем 33. 

Об отступах в if-выражениях

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

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

Приведем пример кода, где это правило было нарушено. 

a = 33  

b = 200  

if b > a:  

print("b больше, чем a")

Если запустить этот фрагмент, будет выдана ошибка, поскольку Python не нашел блок действий, которые надо выполнять в случае, если b больше a.

Выглядеть результат будет так. 

  File "demo_indentation_test.py", line 2  

    print("b больше, чем a")  

        ^  

IndentationError: expected an indented block

Что делает ключевое слово elif в Python?

Оно используется для того, чтобы задать более одного условия. Конечно, можно реализовать эту задачу с помощью нескольких операторов if, но это очень неудобно. А ключевое слово elif позволяет сделать код с перечислением нескольких условий читаемым. 

a = 33  

b = 33  

if b > a:  

    print("b больше, чем a")  

elif a == b:  

    print("a равно b")

Этот код работает так. Сначала определяется значение переменной a. Потом – переменной b. Далее осуществляется проверка, является ли переменная b большей, чем переменная a. Оказывается, что нет. 

Потом проверяется, не являются ли эти переменные равными. Оказывается, что да. Если бы переменная b была большей, чем a, то тогда консоль бы выдала надпись «b больше, чем a». А так она выдаст следующий текст.

a равно b

Так можно указывать любое количество условий. Например, можно сначала сделать проверку, не является ли число большим. Если оказывается, что нет, то выполнять проверку, не является ли меньшим. И только потом проверить эти числа на равенство.

Ключевое слово else и особенности его применения

Else – это также условие. Читается оно так: «если ни одно из предыдущих условий не оказалось истинным, то выполнять следующие действия». Описанная выше идея с тройной проверкой в данном случае может выполняться с использованием выражения if-elif-else, поскольку возможных комбинаций здесь только три. И если две из них оказываются ложными, то тогда писать выражение a больше, чем b. 

a = 200

b = 33

if b > a:

    print("b больше, чем a")  

elif a == b:  

    print("a и b равны")  

else:  

    print("a больше, чем b")

В этом примере так и получается. Число a – 200, в то время как b – всего лишь 100. Следовательно, ни одно из двух условий в блоке if-elif не подходит. Поэтому выполняются те инструкции, которые указаны в блоке else.

В нашем случае можно вообще обойтись без elif, поскольку 200 и 33 никак не могут быть равными. Поэтому приведенный выше код можно сократить. 

a = 200  

b = 33  

if b > a:  

    print("b больше, чем a")

else:

    print("b меньше, чем a")

Создание вложенных операторов

Запись вложенных операторов if для того, чтобы задать несколько условий или создать целую иерархию условий, – отличная идея. И хотя в большинстве случаев синтаксис конструкции if-elif-else гораздо более понятный, иногда использование одного оператора внутри другого – более полезно.

Типичный пример – выполнить проверку только в случае прохождения другой проверки. Давайте на примере, чтобы было нагляднее. 

Допустим, нам надо написать программу, которая проверяет, возможно ли оформление кредита человеком. Ее код будет приблизительно таким. 

gre_score = int(input("Введите текущий лимит: "))

per_grad = int(input("Введите кредитный рейтинг: "))




if per_grad > 70:

    # внешний блок if

        if gre_score > 150:

            # внутренний блок if

    print("Поздравляем, вам выдан кредит")

else:

    print("Извините, вы не имеете права на кредит")

Программа работает по следующему алгоритму:

  1. Сначала пользователь вводит текущий кредитный лимит. 
  2. После того, как он укажет кредитный лимит, он вводит свой кредитный рейтинг.
  3. Осуществляется проверка, является ли кредитный рейтинг большим порогового значения. Таковым является 70.
  4. Если да, то выполняется следующая проверка – является ли текущий лимит большим 150. 
  5. Если и эта проверка пройдена успешно, то человек получает право на получение кредита, о чем программа ему радостно сообщает.
  6. Если первая или последняя проверка не пройдена, включается инструкция, приведенная в блоке else. То есть, программа сообщает, что пользователь не может оформлять кредит. 

Использовать дополнительную проверку можно не только внутри оператора if, но и внутри else

Приведем такой пример кода программы. 

score = int(input("Введите вашу оценку: "))




if score >= 90:

    print("Отлично! Ваша оценка А")

else:

    if score >= 80:

print("Здорово! Ваша оценка - B")

    else:

if score >= 70:

    print("Хорошо! Ваша оценка - C")

else:

    if score >= 60:

print("Ваша оценка - D. Стоит повторить материал.")

    else:

print("Вы не сдали экзамен")

Здесь сначала выполняется проверка, равняется ли балл 90 или больше него. Если да, то тогда выставляется оценка А. Если нет, выполняются последовательные проверки до тех пор, пока не окажется, что пользователь не сдал экзамен.

Короткая запись

Необязательно писать такие громадные фрагменты кода, если нужно задать условие. Можно воспользоваться короткой записью, как в этом примере.

if a > b: print(«a больше, чем b»)

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

Более того, даже если нужно использовать оператор else, все равно есть короткая запись.

print(«A») if a > b else print(«B»)

Более того, можно на одной строке использовать несколько таких операторов.

print(«A») if a > b else print(«=») if a == b else print(«B»)

Операторы And и Or

Есть еще два логических оператора, которые мы не рассмотрели ранее. Они записываются текстом, а не знаками. Первое ключевое слово, которое мы проанализируем – And. Оно используется для того, чтобы несколько условий объединить в одно. Например, если нам надо выдать надпись лишь если одно число больше второго, а третье больше первого. 

if a > b and c > a:  

    print("Оба условия True")

Предположим, и a больше b, и c больше a. В этом случае при проверки обоих этих условий будет получен ответ True. Следовательно, мы можем использовать это у нас в программе. Надпись в консоли так и скажет.

А с помощью оператор Or можно задавать обязательный характер равенства одного из двух условий, но не двух сразу. 

if  a > b or a > c:  

print("Одно из условий True")

Выводы

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

Мы рассмотрели разные примеры использования операторов, и поняли, что тонкостей немало. Но если тренироваться, то все получится сделать.

ОфисГуру
Adblock
detector