Оператор if else в Python

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

Что такое оператор управления?

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

Операторов управления есть несколько: условные операторы, операторы циклов, а также операторы-выражения break и continue.

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

Оператор if

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

if condition:

    <indented statement 1>

    <indented statement 2>




<non-indented statement>

Первая строка задает непосредственно условие, на которое проверяется выражение. 

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

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

Если же использовать не одинаковое количество пробелов, то приложение вернет синтаксическую ошибку. Как правило, ставят 4 отступа. Именно такая рекомендация приводится в официальной документации Python.

Работает инструкция с этим оператором-выражением следующим образом. Если исполняется инструкция if, то осуществляется проверка на предмет истинности заданного условия. Если обнаруживается, что оно истинно, то тогда все инструкции, которые есть в этом блоке, выполняются. Если же оно ложное, то тогда этот блок попросту пропускается.

Инструкции идут вслед за условием. Если нет отступов, Python понимает эти инструкции, как те, которые не принадлежат к условному блоку. В описанном выше примере синтаксиса такой инструкцией служит <non-indented statement>, которая не имеет отступов. 

Например, так. 

number = int(input("Введите число: "))




if number > 10:

    print("Число больше 10")

Здесь будет выведено значение «Число больше 10», если пользователь действительно укажет число, которое больше 10. Если же нет, то тогда программа ничего не выдаст в консоль.

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

А теперь давайте рассмотрим следующий фрагмент. 

number = int(input("Введите число: "))

if number > 10:

    print("первая строка")

    print("вторая строка")

    print("третья строка")




print("Выполняется каждый раз, когда вы запускаете программу")

print("Конец")

А теперь приведем два варианта вывода, чтобы вы видели, как работает данное приложение. 

Введите число: 45

первая строка

вторая строка

третья строка

Выполняется каждый раз, когда вы запускаете программу

Конец

Это первый вариант. 

Введите число: 4

Выполняется каждый раз, когда вы запускаете программу

Конец

Это второй вариант.

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

А вот если операторы управления вводить непосредственно в консоль, то Python ведет себя несколько иначе. Необходимо помнить о том, что для разбития выражения на несколько строк применяется оператор \. Но он не нужен, если используются операторы управления. Интерпретатор в этом случае автоматически включает режим ввода нескольких строк, если сделать клик по Enter после условия if. Как в этом примере. 

>>>

>>> n = 100

>>> if n > 10:

...

Здесь мы нажали на Enter на строке с условием if, после чего командная строка стала выглядеть, как … . Хотя до этого она начиналась с >>>.  Таким образом, консоль показывает, что включен режим ввода в несколько строк. Это указывает на то, что инструкция не была закончена.

А чтобы закончить, необходимо добавить еще одну инструкцию в блок if. 

Если ввод команд осуществляется непосредственно в консоль, то отступ все равно надо добавлять. Так Python понимает, что нужно продолжать режим ввода нескольких строк. 

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

Оператор if-else

С помощью этого оператора интерпретатор исполняет две порции инструкций. Первая – в случае истинности условия, а вторая – если оно оказывается ложным.

Синтаксис этого оператора не сильно сложнее обычного if. Просто добавляется дополнительная строка else с соответствующей последовательностью инструкций, которые выделяются отступами. 

if  condition:

    # блок if

    statement 1

    statement 2

    and so on

else:

    # блок else

    statement 3

    statement 4

    and so on:

При выполнении оператора проверяется условие. Если оно оказывается истинным, то тогда тогда выполняются те команды, которые указываются в блоке if. Если же соответствия этому критерию нет, то тогда выполняются указанные в блоке else команды.

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

Пример 1

Приложение для определения параметров круга: площади и длины окружности.  

radius = int(input("Введите радиус: "))




if radius >= 0:

    print("Длина окружности = ",  2  *  3.14  *  radius)

    print("Площадь = ", 3.14 * radius ** 2)

else:

    print("Пожалуйста, введите положительное число")

Эта программа проверяет, является ли радиус положительным числом. Если да, то тогда выполняет вычисления. Если нет, то тогда просит пользователя ввести положительное число. 

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

$ python3 if_and_else_not_aligned.py

  File "if_and_else_not_aligned.py", line 6

    else:

       ^

SyntaxError: invalid syntax

$

Здесь приводится пример такой ошибки. Чтобы исправить эту проблему, необходимо осуществить вертикальное выравнивание.

Пример 2

Приложение, которое проверяет пароль, который указал пользователь. 

Конечно, это очень упрощенная схема, поскольку в реальных условиях проверка пароля не осуществляется настолько открыто. Сам код дешифратора, равно как и сам пароль, надежно закодированы. Но мы и не ставим целью сделать супер надежную программу для проверки пароля. У нас задача – продемонстрировать пример работы оператора if-else

password = input("Введите пароль: ")

if password == "sshh":

    print("Добро пожаловать")

else:

    print("Доступ запрещен")

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

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

Также возможно использование операторов if-else внутри других операторов if и else. Такой принцип называется вложенностью. 

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

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




if per_grad > 70:

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

        if gre_score > 150:

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

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

else:

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

Работает программа по очень простому принципу. Сначала осуществляется проверка внешнего условия if. Если оказывается, что значение переменной больше 70, то тогда управление приложением осуществляется в рамках внешнего блока if. Кроме этого, выполняется проверка условия gre_score > 150. Если оказывается, что значение этой переменной больше 150, то тогда в консоль выводится то, что человек имеет право на получение займа. 

Если же ни один из этих критериев не проходит проверку, то тогда приложением выдается отказ.

Точно так же возможно использование оператора if-else внутри условия 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("Вы не сдали экзамен")

if-elif-else

Этот оператор используется для проверки нескольких условий. То есть, это полный аналог вложенному оператору if-else. Но пользоваться им более удобно.

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

if condition_1:

    # блок if

    statement

    statement

    more statement

elif condition_2:

    # первый блок elif

    statement

    statement

    more statement

elif condition_3:

    # второй блок elif

    statement

    statement

    more statement




...




else

    statement

    statement

    more statement

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

ОфисГуру
Adblock
detector