Условный оператор if в Python. Синтаксис, блоки else/elif, примеры

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

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

Типы операторов управления

В целом, if – не единственный оператор, управляющий потоком программы. Равно, как и сам он может быть составляющей большей цепи операторов.

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

В программировании есть такое понятие, как ветвление. Именно оно и означает последовательность команд, которая выполняется лишь при условии истинности определенного условия. Сами критерии могут быть разными:

  1. Равенство переменной определенному значению.
  2. Выполнение определенного действия.
  3. Состояние приложения (свернуто или нет).

Спектр может быть намного больше. Условные операторы бывают нескольких типов:

  1. С одной ветвью. То есть, выполняется единичная проверка, по итогам которой выполняются те или иные действия.
  2. С двумя и больше ветвями. Если критерий 1 соответствует истине, то выполнить проверку критерия 2. Если он соответствует истине, то выполнить проверку 3. И так выполнить такое количество проверок, которое требуется.
  3. С несколькими условиями. Здесь все просто. Интерпретатор проверяет на предмет соответствия несколькими условиям или одному из них.

Оператор if

Структура оператора if схожа во всех языках. Тем не менее, в Python его синтаксис несколько отличается от всех остальных:

if condition:

    <входящее выражение 1>

    <входящее выражение 2>

<не входящее выражение>

Сначала объявляется сам оператор, после чего записывается условие, при котором он начинает работать. Условие может быть или истинным, или ложным.

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

Внимание! Отступ внутри всех команд блока if должен быть одним и тем же по размеру. Границы блока определяются именно отступами. 

Согласно документации языка, отступ – 4 пробела. 

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

Если у инструкции, которая находится после условия, отступ отсутствует, она не рассматривается, как блок if. В нашей ситуации этой строчкой является <non-intended statement>. Поэтому независимо от результата проверки, эта строка будет выполняться.

Приведем фрагмент кода для примера того, как работает этот оператор.

number = int(input(«Укажите число: «))

if number > 10:

    print(«Число превышает 10»)

Эта программа запрашивает у пользователя число и проверяет, является ли оно больше 10. Если да, то выдает соответствующую информацию. Например, если пользователь введет число 5, то тогда программа просто завершится, и все.

Зато если указать число 100, то интерпретатор поймет, что оно больше десяти, и сообщит об этом.

Внимание! В нашем случае при ложном условии программа останавливается, поскольку за инструкцией никаких команд не дается.

В описанном выше коде команда одна. Но их бывает намного больше. Единственное требование – делать отступы.

Теперь давайте проанализируем эту последовательность команд.

number = int(input(«Напишите число: «))

if number > 10:

    print(«первая строчка»)

    print(«вторая строчка»)

    print(«третья строчка»)

print(«Строка, которая выполняется, независимо от введенного числа»)

print(«Завершение приложения»)

Попробуйте догадаться, какой вывод будет, если указать значения 2, 5, 10, 15, 50.

Как видим, если введенное пользователем число больше десяти, то на вывод идут три строчки + одна с текстом «Выполняется каждый раз…» и одна «Конец», а если меньше десяти, то только одна, с другим текстом. Исполняться в случае истинности будут только строчки 3,4,5. Тем не менее, две последние строки будут написаны независимо от того, какое число укажет пользователь.

Если использовать операторы непосредственно в консоли, результат будет отличаться. Интерпретатор сразу включает режим нескольких строк, если после указания критерия проверки нажать Enter.

Предположим, мы написали следующую последовательность команд.

>>>

>>> n = 100

>>> if n > 10:

После этого мы увидим, что >>> заменилась на троеточие. Это означает, что включился режим многострочного ввода. Простыми словами, если нажать Enter, будет осуществлен переход ко вводу второго этапа инструкции. 

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

>>>

>>> n = 100

>>> if n > 10:

…     print(«n v 10»)

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

Оператор-выражение if-else

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

if  condition:

    # блок if

    statement 1

    statement 2

    and so on

else:

    # блок else

    statement 3

    statement 4

    and so on:

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

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

Вот код, реализующий эту задачу. Но здесь есть одна ошибка. Попробуйте угадать, какая. 

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

if radius >= 0:

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

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

    else:

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

Ошибка в несоответствии отступов. If и Else должны быть расположены без них или с одинаковым их количеством (это зависит от того, вложенные они или нет).

Приведем еще один вариант использования (где все будет правильно с выравниванием операторов) – элемент приложения, проверяющего пароль.

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

if password == «sshh»:

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

else:

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

Эта инструкция пропускает человека дальше, если пароль sshh. Если же любая другая комбинация букв и цифр, то выдает сообщение «Доступ запрещен».

Оператор-выражение if-elif-else

Только если несколько условий не соответствуют истине, выполняется инструкция, которая находится в блоке 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

Можно указывать любое количество дополнительных условий.

Вложенные операторы

Есть еще один способ реализовать несколько условий – вставить дополнительные проверки условий в блок if.

Оператор if внутри другого блока условия

gre_score = int(input(«Укажите ваш текущий кредитный лимит»))

per_grad = int(input(«Введите ваш рейтинг по кредитной истории: «))

if per_grad > 70:

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

        if gre_score > 150:

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

    print(«Поздравляем, вы получили кредит»)

else:

    print(«Извините, вам заем не положен»)

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

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

Теперь немного переработаем ту программу.

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

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

if per_grad > 70:

    if gre_score > 150:

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

    else:

        print(«У вас низкий кредитный лимит»)

else:

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

Сам код очень похожий, но вложенный if также предусматривает алгоритм на случай, если условие из него оказывается ложным. То есть, лимит по карте недостаточный, но кредитная история хорошая, выдается сообщение «У вас низкий кредитный рейтинг».

Оператор 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(«Вы не сдали экзамен»)

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

Таким образом, оператор if выполняет очень важную функцию – делает так, чтобы определенные фрагменты кода выполнялись исключительно если в этом есть необходимость. Без него невозможно представить программирование, ведь даже простейшие алгоритмы требуют развилок типа «если налево пойдешь – то найдешь, а если вправо – то тебе надо сделать то-то и то».

ОфисГуру
Adblock
detector