На этом занятии поговорим об условном операторе. Что это такое? Представьте, что вам нужно вычислить модуль числа, хранящегося в переменной x. Как это сделать? Очевидно, нужно реализовать такой алгоритм.
И в этом алгоритме есть вот такое ветвление программы: при x ) : оператор
Если условное выражение истинно, то выполняется оператор, записанный в if. Иначе этот оператор не выполняется. Используя оператор ветвления, запишем программу для вычисления модуля числа:
Здесь операция изменения знака переменной x будет выполняться только для отрицательных величин, а положительные просто выводятся в консоль, минуя эту операцию.
Какие операторы сравнения существуют в Python и как они работают? Многие из них нам известны из школьного курса математики, это:
Истинно, если a больше b
Истинно, если a больше или равно b
a ‘А’ завершится на первом шаге, тогда как строки «Кот» и «Код» будут сравниваться посимвольно:
К равна К.
о равна о.
т больше чем д.
На этом сравнение заканчивается. Первая строка больше.
Конструкция 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 в указанный диапазон.
Итак, запомните следующие правила:
условие x >= 2 and x =2 и x 7 истинно, если истинно хотя бы одно из подусловий (x 7) и ложно, когда оба ложны.
Вот так можно записывать более сложные условия в условном операторе if. Причем они могут комбинироваться в любом сочетании, например:
Здесь реализована проверка, что x должно принадлежать [2; 7], а y не принадлежать [0; 5]. И обратите внимание вот на эти круглые скобки. Дело в том, что приоритет у операции and выше, чем у or, поэтому без скобок у нас бы получилась вот такая проверка:
if (x >= 2 and x 5)
то есть, мы проверяли бы, что x принадлежит [2; 7] и y меньше нуля ИЛИ y больше 5. Как вы понимаете – это уже совсем другая проверка. Поэтому учитывайте приоритет этих операций при формировании составного условия. Если нужно изменить приоритет – используйте круглые скобки.
Одиночные проверки
Внутри условия можно прописывать и такие одиночные выражения:
Вот этот оператор not – это отрицание – НЕ, то есть, чтобы проверить, что 0 – это false мы преобразовываем его в противоположное состояние с помощью оператора отрицания НЕ в true и условие срабатывает. Аналогично и с переменной z, которая равна false.
Из этих примеров можно сделать такие выводы:
Любое число, отличное от нуля, дает True. Число 0 преобразуется в False.
Пустая строка – это False, любая другая строка с символами – это True.
С помощью оператора not можно менять условие на противоположное (в частности, False превращать в True).
Итак, в условиях мы можем использовать три оператора: 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. Введение в строки. Базовые операции над строками