Логические выражения в Python 3
Логический тип данных (или Boolean) – это примитивный тип, который принимает одно из двух возможных значений: истину (True) или ложь (False). Этот тип используется во многих языках программирования для построения алгоритмов и управления поведением программ.
Примечание: Название этого типа данных (Boolean) всегда пишется с заглавной буквы, поскольку он назван в честь математика Джорджа Буля, который занимался исследованиями математической логики. Значения True и False тоже пишутся с большой буквы – в Python они являются специальными значениями.
Данное руководство ознакомит вас с основами булевой логики в Python: операторами сравнения, логическими операторами, таблицами истинности и т.п.
Операторы сравнения
В программировании операторы сравнения используются при оценке и сравнении значений для последующего сведения их к одному логическому значению (True или False).
Операторы сравнения Python 3 представлены в этой таблице:
Оператор | Значение |
== | Проверяет равенство между компонентами; условие истинно, если компоненты равны. |
!= | Проверяет равенство между компонентами; условие истинно, если компоненты НЕ равны. |
Оценивает значение левого компонента; условие истинно, если он больше, чем правый. | |
= | Оценивает значение левого компонента; условие истинно, если он больше или равен правому компоненту. |
Попробуйте поработать с этими операторами, чтобы понять, как они действуют. Для начала создайте пару переменных:
Теперь сравните значения переменных с помощью вышеперечисленных операторов.
Следуя математической логике, Python оценивает соотношения между значениями переменных так:
Также операторы сравнения можно применять к числам с плавающей точкой и строкам.
Примечание: Строки чувствительны к регистру; чтобы отключить такое поведение, нужно использовать специальный метод.
Попробуйте сравнить две строки:
Hello = «Hello»
hello = «hello»
print(«Hello == hello: «, Hello == hello)
Hello == hello: False
Строки Hello и hello содержат одинаковый набор символов, однако они не равны, поскольку одна из них содержит символы верхнего регистра. Попробуйте добавить ещё одну переменную, которая также будет содержать символы верхнего регистра, а затем сравните их.
Hello = «Hello»
hello = «hello»
Hello_there = «Hello»
print(«Hello == hello: «, Hello == hello)
print(«Hello == Hello_there», Hello == Hello_there)
Hello == hello: False
Hello == Hello_there: True
Обратите внимание на разницу между операторами = и ==.
x = y # Оператор присваивания. Устанавливает равенство между x и y (то есть присваивает x значение y).
x == y # Оператор сравнения. Проверяет равенство между x и y и оценивает выражение как истинное или ложное. Выражение истинно, если x и y равны.
Логические операторы
Для сравнения значений используется три логических оператора, которые сводят результат к логическому значению True или False.
Оператор | Значение |
and | Оператор «и»: выражение истинно, если оба его компонента истинны. |
or | Оператор «или»: выражение истинно, если хотя бы один из его компонентов истинен. |
not | Оператор «не»: изменяет логическое значение компонента на противоположное. |
Логические операторы обычно используются для оценки двух или больше выражений. Например, их можно использовать в программе, которая проверит:
Если оба значения истинны, студент будет переведён на следующий курс.
Другой пример: программа с логическими операторами может проверять активность пользователя в онлайн-магазине:
Для примера попробуйте сравнить три выражения:
В первом случае оба выражения истинны, потому оператор and возвращает True.
Во втором случае истинно только значение 8 == 8. Поскольку хотя бы одно из предложенных условий истинно, оператор or возвращает True. Оператор and в таком случае выдал бы False.
Примечание: Если вы не понимаете, как это работает, вам помогут разобраться таблицы истинности. Эту тему мы рассмотрим далее в этом руководстве.
Логические операторы можно объединять в составные выражения:
Далее оператор not заменит полученное значение False на обратное ему логическое значение: not(False) = True. Значит, результат будет таким:
Таблицы истинности
Математическая логика – очень полезная в программировании область знаний. В данном руководстве мы ознакомимся с основными её аспектами.
Ниже представлены таблицы истинности для оператора сравнения == и всех логических операторов. Ими можно пользоваться при написании логических выражений. В таблицах перечислены общие случаи использования оператора, потому их рекомендуется выучить наизусть.
Таблица истинности оператора ==
x | == | y | Результат |
True | == | True | True |
True | == | False | False |
False | == | True | False |
False | == | False | True |
Таблица истинности оператора AND
x | and | y | Результат |
True | and | True | True |
True | and | False | False |
False | and | True | False |
False | and | False | False |
Таблица истинности оператора OR
x | or | y | Результат |
True | or | True | True |
True | or | False | True |
False | or | True | True |
False | or | False | False |
Таблица истинности оператора NOT
not | x | Результат |
not | True | False |
not | False | True |
Таблицы истинности – общие математические таблицы, которые используются в логике. Их полезно выучить наизусть, чтобы затем применять при построении алгоритмов и написании программ.
Использование логических операторов для управления потоком
Для управления результатом и потоками данных программы можно использовать условные операторы (condition) с выражениями (clause).
Условные операторы оценивают значение как истинное или ложное.
Выражение – это блок кода, который идёт после условного оператора и определяет результат программы.
Ниже приведён блок кода, который показывает, как объединить условные операторы для управления потоком программы Python.
if grade >= 65: # условие
print(«Passing grade») # выражение
else:
print(«Failing grade»)
Эта программа оценивает результат каждого студента и определяет, сдал он экзамен или нет. К примеру, если студент набрал 83, первое условие будет иметь значение True, и программа выведет на экран строку:
Если же студент набрал 59 баллов, первое условие будет ложно, потому программа выдаст:
Читайте также: руководство PEP 8
Заключение
Данное руководство охватывает основы работы с логическими данными Python.
this iz asqd
this iz asqd
Python. Урок 3: логические выражения и условный оператор
Логические выражения и булевый тип данных
Булевый (логический) тип — это такой тип данных, который имеет только два возможных значения: True (правда) и False (ложь).
Булевый тип применяется когда для результатом выполнения операции являются значения «да» или «нет».
Например, все операции сравнения двух величин (равно, больше, меньше), операции вхождения элемента в множество и проверка на пересечение множеств возвращают в качестве результата булевый тип.
Логические операции и операторы
Условный оператор
Ход выполнения программы может быть линейным: выражения выполняются, начиная с первого и заканчивая последним. Но чаще всего нам необходимо уметь управлять ходом выполнения программы. Например, часть кода должна выполняться лишь при определенном значении конкретной переменной.
После ключевого слова if проверяется условие выполнения кода после двоеточия (тела условия). Если условие при if окажется ложным — выполняется код после else.
В языке Python не используются разделители «;» или фигурные скобки (<>). Их роль выполняют отступы от начала строки (по клавише Tab).
То есть код инструкции if, который должен выполнятся если условие истинно обязательно должен иметь отступ вправо!
Основная программа должна иметь тот же отступ, что и инструкция if.
Python: is. Равенство и эквивалентность
Оператор is (и его антагонист is not ) применяются проверки равенства (неравенства) ссылок на объект. Сразу отметим то, что на значение (допустим 323235) может быть копировано и храниться в разных местах (в разных объектах в памяти).
Следите внимательно за ловкостью рук:
Поэтому новички часто совершают ошибку, считая, что писать == – это как-то не Python-way, а is – Python-way. Это ошибочное предположение может быть раскрыто не сразу.
Python старается кэшировать и переиспользовать строковые значения. Поэтому весьма вероятно, что переменные, содержащие одинаковые строки, будут содержать ссылки на одинаковые объекты. Но это не факт! Смотрите последний пример:
Мы составили строку из двух частей и она попала в другой объект. Python не догадался (и правильно) поискать ее в существующих строках.
Суть is (id)
Это тоже самое, что:
И все! Пример для проверки:
Для чего можно применять is?
Если мы точно знаем уверены, что хотим проверять именно равенство ссылок на объекты (один ли это объект в памяти или разные).
Также для Ellipsis:
Можно применять is для сравнения типов с осторожностью (без учета наследования, т. е. проверка на точное совпадение типов):
С наследованием может быть конфуз:
Нюанс: is not против is (not)
Сравнение пользовательских классов
Если он реализован, то будет вызван метод __eq__ для левого операнда.
Операции сравнения в Python, цепочки сравнений.
В Python есть шесть операций сравнения. Все они имеют одинаковый приоритет, который выше, чем у логических операций.
Разрешенные операции сравнения:
В примере выше y вычисляется только один раз. Если x оказывается ложным, то в обоих случаях, приведенных выше z не оценивается вообще.
В такой форме сравнения легче читаются, и каждое подвыражение вычисляется по крайней мере один раз. Так же читайте о результатах смешивание операторов is и in в цепочках сравнений»
Объекты разных типов, за исключением различных числовых типов, никогда не будут равными.
Следующий список описывает поведение сравнения наиболее важных встроенных типов:
None и NotImplemented являются одиночными. PEP 8 советует, что сравнения для одиночных экземпляров всегда должны выполняться с использованием или нет, а не с операторами равенства.
Двоичные последовательности (экземпляры bytes или bytearray ) можно сравнивать внутри и между их типами. Они сравнивают лексикографически, используя числовые значения своих элементов.
Строки (экземпляры str ) лексикографически сравниваются с использованием числовых кодовых точек Unicode (результат встроенной функции ord() ) их символов.
Строки и двоичные последовательности нельзя сравнивать напрямую.
Последовательности сравнивают лексикографически с помощью сравнения соответствующих элементов. Встроенные контейнеры обычно предполагают, что идентичные объекты равны самим себе. Это позволяет им обходить тесты на равенство для идентичных объектов, чтобы повысить производительность и сохранить свои внутренние инварианты.
Лексикографическое сравнение встроенных коллекций работает следующим образом:
Чтобы две коллекции были равными, они должны быть одного типа, иметь одинаковую длину и каждая пара соответствующих элементов должна быть равной. Например [1,2] == (1,2) ложно, потому что типы последовательностей разные.
Множества (экземпляры set или frozenset ) можно сравнивать внутри и между их типами.
Большинство других встроенных типов не имеют реализованных методов сравнения, поэтому они наследуют поведение сравнения по умолчанию.
Примеры использования операции сравнения:
Цепочки из нескольких операций сравнения:
Числа типа float не являются десятичными дробями и используют двоичную арифметику, поэтому иногда выражения могут вычисляться с ничтожно малыми погрешностями. Из-за этих погрешностей операции сравнения работают не так как ожидается.
Операторы и выражения в Python
Б ольшинство строк программного кода представляют собой выражения. Например: 1 + 2 — это выражение. Выражение состоит из 2 частей:
Операторы сравнения
Для проверки истинности данного условия, используется логический тип. Когда мы выполним данное выражение, в результате нам вернется True (истина) или False (ложь).
В данном примере мы используем один из операторов сравнения — «==» (равно). Всего в Python таких операторов 6:
Логические операторы
Арифметические операторы
Арифметические операторы в Python производят арифметические операции над числами (сложение, вычитание, деление и т.д.);
Операторы присваивания
Операторы присваивания в Python работаю вполне очевидно — значение находящееся справа присваивается переменной, находящейся слева. Существует несколько разновидностей операторов присваивания:
Python поддерживает не только обычное присваивание правого операнда левому, но и множественное присваивание.
С помощью такого присваивания можно поменять значения переменных между собой:
>>> a = 1 >>> b = 2 >>> a, b = b, a >>> print(a, b) 2 1
Также с помощью множественного присваивания можно «распаковывать» строки (str), списки (list), кортежи (tuple) и словари (dict).
Распаковка особенно удобна, когда функция возвращает несколько значений в виде кортежа (tuple):
>>> def test_page(): return 404, «Not found» >>> code, message = test_page() >>> print(code, message) 404 Not found
Главное условие распаковки – количество элементов должно совпадать
Если необходимо распаковать лишь несколько элементов, воспользуйтесь переменной со знаком » * «:
>>> text = «deactivate» >>> first, second, *other_letters = text >>> print(first, second, other_letters) d e [‘a’, ‘c’, ‘t’, ‘i’, ‘v’, ‘a’, ‘t’, ‘e’]
Побитовые операторы
Операторы членства
В Python существует всего 2 оператора принадлежности — in и not in и предназначены они для проверки наличия элемента в строке (str), списке (list), словаре (dict) или кортеже (tuple).
Операторы тождественности
Данные операторы сравнивают размещение двух объектов в памяти.
Приоритет операторов
Таблица приоритетов операторов в Python показана ниже.
Элементы отсортированы по убыванию, с высокого приоритета к более низкому. В комбинациях с несколькими операторами, оператор с большим приоритетом выполняется первым.