>>>
Сравниваем выражения с помощью операторов if, elif и else
До этого момента мы говорили только о структурах данных. Теперь же наконец готовы сделать первый шаг к рассмотрению структур кода, которые вводят данные в программы. (Вы уже могли получить представление о них в главе 3, в разделе о множествах.) В качестве первого примера рассмотрим небольшую программу, которая проверяет значение булевой переменной disaster и выводит подходящий комментарий:
>>> disaster = True
>>> if disaster:
…·····print("Woe!")
… else:
…·····print("Whee!")
…
Woe!
>>>
Строки if и else в Python являются операторами, которые проверяют, является ли значение выражения (в данном случае переменной disaster) равным True. Помните, print() — это встроенная в Python функция для вывода информации, как правило, на ваш экран.
Если вы работали с другими языками программирования, обратите внимание на то, что при проверке if вам не нужно ставить скобки. Не нужно писать что-то вроде if (disaster == True). В конце строки следует поставить двоеточие (:). Если вы, как и я, иногда забываете ставить двоеточие, Python выведет сообщение об ошибке.
Каждая строка print() отделена пробелами под соответствующей проверкой. Я использовал четыре пробела для того, чтобы выделить каждый подраздел. Хотя вы можете использовать любое количество пробелов, Python ожидает, что внутри одного раздела будет применяться одинаковое количество пробелов. Рекомендованный стиль — PEP-8 (http://bit.ly/pep-8) — предписывает использовать четыре пробела. Не применяйте табуляцию или сочетание табуляций и пробелов — это мешает подсчитывать отступы.
Все выполненные в этом примере действия я объясню более детально далее в текущей главе.
1. Присвоили булево значение True переменной disaster.
2. Произвели условное сравнение с помощью операторов if и else, выполняя разные фрагменты кода в зависимости от значений переменной disaster.
3. Вызвали функцию print(), чтобы вывести текст на экран.
Можно организовывать проверку в проверке столько раз, сколько вам нужно:
>>> furry = True
>>> small = True
>>> if furry:
…·····if smalclass="underline"
…·········print("It's a cat.")
…·····else:
…·········print("It's a bear!")
… else:
…·····if smalclass="underline"
…·········print("It's a skink!")
…·····else:
…·········print("It's a human. Or a hairless bear.")
…
It's a cat.
В Python отступы определяют, какие разделы if и else объединены в пару. Наша первая проверка обращалась к переменной furry. Поскольку ее значение равно True, Python переходит к выделенной таким же количеством пробелов проверке if small. Поскольку мы указали значение переменной small равным True, проверка вернет результат True. Это заставит Python вывести на экран строку It's a cat.
Если необходимо проверить более двух вариантов, используйте операторы if, elif (это значит else if — «иначе если») и else:
>>> color = "puce"
>>> if color == "red":
…·····print("It's a tomato")
… elif color == "green":
…·····print("It's a green pepper")
… elif color == "bee purple":
…·····print("I don't know what it is, but only bees can see it")
… else:
…·····print("I've never heard of the color", color)
…
I've never heard of the color puce
В предыдущем примере мы проверяли равенство с помощью оператора ==. В Python используются следующие операторы сравнения:
• равенство (==);
• неравенство (!=);
• меньше (<);
• меньше или равно (<=);
• больше (>);
• больше или равно (>=);
• включение (in …).
Эти операторы возвращают булевы значения True или False. Взглянем на то, как они работают, но сначала присвоим значение переменной x:
>>> x = 7
Теперь выполним несколько проверок:
>>> x == 5
False
>>> x == 7
True
>>> 5 < x
True
>>> x < 10
True
Обратите внимание на то, что для проверки на равенство используются два знака «равно» (==); помните, что один знак «равно» применяется для присваивания значения переменной.
Если вам нужно выполнить несколько сравнений одновременно, можете использовать булевы операторы and, or и not, чтобы определить итоговый двоичный результат.
Булевы операторы имеют более низкий приоритет, нежели фрагменты кода, которые они сравнивают. Это значит, что сначала высчитывается результат фрагментов, а затем они сравниваются. В данном примере из-за того, что мы устанавливаем значение х равным 7, проверка 5 < х возвращает значение True и проверка х < 10 также возвращает True, поэтому наше выражение преобразуется в True and True: