Подробно об операторе выбора If-elif-else в Python
Принятие решений – самый важный аспект почти всех языков программирования. Как следует из названия, принятие решений позволяет нам запустить определенный блок кода для конкретного решения. Здесь принимаются решения о действительности конкретных условий. Проверка условий – это основа принятия решений.
В python принятие решения осуществляется с помощью операторов выбора if-else.
Оператор
Описание
if
Оператор if используется для проверки определенного условия. Если условие истинно, будет выполнен блок кода(if-block).
if-else
Оператор if-else аналогичен оператору if, за исключением того факта, что он также предоставляет блок кода для ложного случая проверяемого условия. Если условие, указанное в операторе if, ложно, то будет выполнен оператор else.
Nested if
Вложенные операторы if позволяют нам использовать if-else внутри внешнего оператора if.
Отступы в Python
Для достижения простоты программирования в python не используются круглые скобки для кода уровня блока. В Python для объявления блока используется отступ. Если два оператора находятся на одном уровне отступа, то они являются частью одного и того же блока. Как правило, для отступов операторов используются четыре пробела, что является типичным размером отступа в Python.
Отступы – это наиболее используемая часть языка Python, поскольку в них объявляется блок кода. Все операторы одного блока имеют одинаковый уровень отступа. Мы увидим, как на самом деле происходит отступ при принятии решений в Python.
Оператор if
Оператор if используется для проверки определенного условия, и если условие истинно, он выполняет блок кода, известный как блок if. Условием оператора if может быть любое допустимое логическое выражение, которое может быть оценено как истинное или ложное.
Синтаксис оператора if приведен ниже.
Пример 2: Программа для печати наибольшего из трех чисел.
Оператор if-else
Оператор if-else предоставляет блок else в сочетании с оператором if, который выполняется в случае ложного условия.
Если условие истинно, то выполняется блок if. В противном случае выполняется блок else.
Синтаксис оператора if-else приведен ниже.
Пример 1: Программа для проверки того, имеет ли человек право голосовать или нет.
Пример 2: Программа для проверки четности числа.
Оператор elif
Оператор elif позволяет нам проверять несколько условий и выполнять конкретный блок операторов в зависимости от истинного условия среди них. В нашей программе может быть любое количество операторов elif в зависимости от наших потребностей. Однако использовать elif необязательно.
Оператор elif работает как оператор лестничной диаграммы if-else-if в C. За ним должен следовать оператор if.
Условный оператор if и составные условия
На этом занятии поговорим об условном операторе. Что это такое? Представьте, что вам нужно вычислить модуль числа, хранящегося в переменной x. Как это сделать? Очевидно, нужно реализовать такой алгоритм.
И в этом алгоритме есть вот такое ветвление программы: при x ) : оператор
Если условное выражение истинно, то выполняется оператор, записанный в if. Иначе этот оператор не выполняется. Используя оператор ветвления, запишем программу для вычисления модуля числа:
Здесь операция изменения знака переменной x будет выполняться только для отрицательных величин, а положительные просто выводятся в консоль, минуя эту операцию.
Какие операторы сравнения существуют в Python и как они работают? Многие из них нам известны из школьного курса математики, это:
Истинно, если a больше b
Истинно, если a больше или равно b
Конструкция if – elif – else
Теперь, когда мы знаем как сравниваются между собой величины, вернемся к нашему условному оператору if. И предположим, что хотим определить знак числа в переменной x. Конечно, проверку можно записать вот так:
Но можно сделать лучше. Смотрите, мы здесь имеем дело со взаимоисключающими условиями, то есть, они не могут произойти одновременно: либо первое, либо второе. Для таких ситуаций можно использовать ключевое слово else – иначе, чтобы ускорить процесс проверки:
Теперь, у нас здесь всего одно условие. Если оно истинно, то выполнится первый print, а иначе – второй. Такая программа будет работать быстрее. И обратите внимание на синтаксис записи функции print: перед ней необходимо записать хотя бы один пробел (обычно ставится 4 пробела или символ табуляции). Эти пробелы в Python означают блок кода, который выполняется по некоторому условию. В данном случае блок кода состоит всего из одного оператора print. То же самое и для else.
В общем случае, синтаксис оператора if else следующий:
if( ): оператор 1 else: оператор 2
if( ): оператор 1 else: оператор 2
Если же мы хотим по такому принципу выполнить три проверки: x > 0; x : оператор 1 оператор 1 … оператор N
Здесь по первым двум условиям выполняется два оператора: присвоение значения переменной sgn и вывод результата в консоль.
В ряде случаев конструкцию if-else удобнее записывать через тернарный условный оператор, который имеет такой синтаксис:
result = значение1 if else значение2
При истинности условия возвращается значение1, в противном случае – значение2. Например:
Получим True, если возраст (age) больше или равен 18, иначе – False. Кстати, проверку из данного примера можно сделать короче, просто прописав
здесь оператор >= вернет True при возрасте больше или равен 18 и False – в противном случае.
Теперь, когда мы разобрались с базовыми моментами проверки условий, сделаем следующий шаг и попробуем реализовать проверку попадания переменной x в диапазон [2; 7], то есть, условие должно быть истинным, когда x принимает значения в этом диапазоне чисел. Очевидно, что здесь должно быть две проверки: первая – мы проверяем, что x >= 2 и вторая – проверяем, что x 7, то делается вывод о невхождении переменной x в указанный диапазон.
Вот так можно записывать более сложные условия в условном операторе if. Причем они могут комбинироваться в любом сочетании, например:
Здесь реализована проверка, что x должно принадлежать [2; 7], а y не принадлежать [0; 5]. И обратите внимание вот на эти круглые скобки. Дело в том, что приоритет у операции and выше, чем у or, поэтому без скобок у нас бы получилась вот такая проверка:
то есть, мы проверяли бы, что x принадлежит [2; 7] и y меньше нуля ИЛИ y больше 5. Как вы понимаете – это уже совсем другая проверка. Поэтому учитывайте приоритет этих операций при формировании составного условия. Если нужно изменить приоритет – используйте круглые скобки.
Одиночные проверки
Внутри условия можно прописывать и такие одиночные выражения:
Вот этот оператор not – это отрицание – НЕ, то есть, чтобы проверить, что 0 – это false мы преобразовываем его в противоположное состояние с помощью оператора отрицания НЕ в true и условие срабатывает. Аналогично и с переменной z, которая равна false.
Итак, в условиях мы можем использовать три оператора: and, or и not. Самый высокий приоритет у операции not, следующий приоритет имеет операция and и самый маленький приоритет у операции or. Вот так работает оператор if в Python.
Видео по теме
#1. Первое знакомство с Python Установка на компьютер
#2. Варианты исполнения команд. Переходим в PyCharm
#3. Переменные, оператор присваивания, функции type и id
#4. Числовые типы, арифметические операции
#5. Математические функции и работа с модулем math
#6. Функции print() и input(). Преобразование строк в числа int() и float()
#7. Логический тип bool. Операторы сравнения и операторы and, or, not
#8. Введение в строки. Базовые операции над строками
Условные конструкции в Python существуют для того, чтобы разработчик мог задавать определенное поведение программы в зависимости от заданных ей условий. Для использования таких конструкций программисту необходимо определить хотя бы одно условие, вместе с кодом, который будет выполнятся, если это условие истинно. Так же, при необходимости, возможно написать код, который будет выполнятся, если условие определенно как ложное.
Условные конструкции, это типичная структура для реализации механизма принятия решений, и они существуют в подавляющем большинстве языков программирования.
В Python предполагается, что любое ненулевое и непустое значение равняется истине (True), в то время, как ноль или пустой объект равняется лжи (False).
В Python существуют следующие условные конструкции:
Условная конструкция if в Python:
Конструкция if. else в Python:
В конструкцию if может быть добавлена команда else. Она содержит блок кода, который выполняется, если условие в команде if ложно.
Команда elif в Python:
Команда elif позволяет проверить истинность нескольких выражений и в зависимости от результата проверки, выполнить нужный блок кода.
Как и команда else, команда elif являктся опциональной, однако, в отличие от команды else, у одной if-конструкции может существовать произвольное количество команд elif.
Базовый Python не поддерживает конструкцию switch/case, как, например, JavaScript, но ее возможно реализовать при помощи if. elif. else конструкции.
Вложенные условные конструкции в Python:
В процессе разработки может возникнуть ситуация, в которой после одной истинной проверки следует сделать еще несколько. В таком случае необходимо использовать вложенные условные конструкции. То есть одну if. elif. else конструкцию внутри другой.
Логика выполнения вложенных условных конструкций та же, что и у обычных. Главное не запутаться с отступами и порядком выполнения сравнений.
Оператор выбора в Python (if else)
Зачем нужны условные инструкции
Фундаментальная важность условий для любого из языков программирования заключается в их возможности описывать большую часть логики работы программы.
Говоря простыми словами, конструкция if else в Python указывает интерпретатору, следует ли выполнять определенный участок кода или нет.
Как и все прочие составные инструкции языка, оператор выбора также поддерживает свойство вложенности. Это означает, что использование if else позволяет создавать внутри программного модуля так называемое логическое ветвление.
Как работает if else
Синтаксис
Оператор if else в языке Python — это типичная условная конструкция, которую можно встретить и в большинстве других языков программирования.
# самый простой пример, где есть всего одно условие a = 1 if a == 1: print(«It is true») > It is true
Синтаксически конструкция выглядит следующим образом:
Для каждой из частей существует ассоциированный с ней блок инструкций, которые выполняются в случае истинности соответствующего им условного выражения.
То есть интерпретатор начинает последовательное выполнение программы, доходит до if и вычисляет значение сопутствующего условного выражения. Если условие истинно, то выполняется связанный с if набор инструкций. После этого управление передается следующему участку кода, а все последующие части elif и часть else (если они присутствуют) опускаются.
Отступы
Отступы — важная и показательная часть языка Python. Их смысл интуитивно понятен, а определить их можно, как размер или ширину пустого пространства слева от начала программного кода.
# начало кода # код # код # код # начало первого отступа # первый отступ # первый отступ # начало второго отступа # второй отступ # второй отступ # конец второго отступа # конец первого отступа
Благодаря отступам, python-интерпретатор определяет границы блоков. Все последовательно записанные инструкции, чье смещение вправо одинаково, принадлежат к одному и тому же блоку кода. Конец блока совпадает либо с концом всего файла, либо соответствует такой инструкции, которая предшествует следующей строке кода с меньшим отступом.
Таким образом, с помощью отступов появляется возможность создавать блоки на различной глубине вложенности, следуя простому принципу: чем глубже блок, тем шире отступ.
Примеры
Рассмотрим несколько практических примеров использования условного оператора.
Пример №1 : создание ежедневного бэкапа (например базы данных):
Пример №2 : Проверка доступа пользователя к системе. В данном примере if проверяет наличие элемента в списке:
BLACK_LIST = [‘192.34.12.3’, ‘192.34.12.5’, ‘192.34.10.23’] USERS = [‘rolli34’, ‘constantinpetrovv’, ‘kate901’] def access_available(user_name, ip): if user_name in USERS: if ip not in BLACK_LIST: return True else: print(f»write to log: user [ip: ] in block list») else: print(f»write to log: user [ip: ] does not exists») return False if access_available(«rolli34», «192.34.12.111»): print(f»Hello!!») > Hello!! if access_available(«rolli34», «192.34.10.23»): print(f»Hello!!») > write to log: user rolli34 [ip: 192.34.10.23] in block list if access_available(«devnull», «192.34.10.11»): print(f»Hello!!») > write to log: user devnull [ip: 192.34.10.11] does not exists
Оператор elif
elif позволяет программе выбирать из нескольких вариантов. Это удобно, например, в том случае, если одну переменную необходимо многократно сравнить с разными величинами.
Такая конструкция может содержать сколь угодно большую последовательность условий, которые интерпретатор будет по порядку проверять.
Но помните, что первое условие всегда задается с if
Также не стоит забывать, что как только очередное условие в операторе оказывается истинным, программа выполняет соответствующий блок инструкций, а после переходит к следующему выражению.
Из этого вытекает, что даже если несколько условий истинны, то исполнению подлежит все равно максимум один, первый по порядку, блок кода с истинным условием.
Если ни одно из условий для частей if и elif не выполняется, то срабатывает заключительный блок под оператором еlse (если он существует).
Заглушка pass
Оператор-заглушка pass заменяет собой отсутствие какой-либо операции.