Логические числа в питоне

Логический тип данных (bool) в Python

Логический тип данных (bool) (или булевый тип) это примитивный тип данных, который принимает 2 значения — истина или ложь.

В Python имеется самостоятельный логический тип bool , с двумя предопределенными значениями:

True и False пишутся с большой буквы. Если написать с маленькой true , интерпретатор выдаст ошибку: NameError: name ‘true’ is not defined

True и False являются экземплярами класса bool который в свою очередь является подклассом int Поэтому True и False в Python ведут себя как числа 1 и 0. Отличие только в том, как они выводятся на экран.

>>> True True >>> type(True) >>> isinstance(True, int) True >>> True == 1 True >>> True + 4 # True это число 1 5 >>> 5 * False # False это число 0 0

Часто логический тип данных используется в ветвлениях if . Если результат выполнения True — выполняется соответствующая ветка.

Цикл while работает аналогичным образом — цикл выполняется до тех пор, пока логическое выражение True .

>>> count = 5 >>> while count: print(«count = <>«.format(count)) count -= 1 count = 5 count = 4 count = 3 count = 2 count = 1

Преобразования

Другие типы → bool

В Python для приведения других типов данных к булевому типу, используется функция bool() Работает эта функция по следующему соглашению:

  • непустая строка (в том числе если это один или несколько пробелов);
  • ненулевое число (в том числе меньшее единицы, например -5);
  • непустой список/кортеж (даже если он содержит один пустой элемент, например пустой кортеж);
  • функция.

👉 Функция bool() вернет False:

bool → str

Бывают ситуации, когда нам необходимо получить True и False в строковом представлении. Если выполнить код ниже, он вызовет ошибку:

print(«answer is » + True) TypeError: can only concatenate str (not «bool») to str

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

Для вывода на экран булевого значения, необходимо привести его к строке:

>>> answer = True >>> print(«my answer is » + str(True)) my answer is True

или используйте форматирование строки:

print(«my answer is <>«.format(True))

bool → int

Встроенная функция int() преобразует логическое значение в 1 или 0.

Аналогичного результата можно добиться умножением логического типа на единицу:

Логический тип и операторы

Операторы — это своего рода функционал, представленный в виде символов (например + ==) или зарезервированных слов (например and not).

В Python используется несколько типов операторов. Мы же рассмотрим только операторы сравнения и логические операторы , т.к. результатом их выполнения являются True или False .

>>> 1 == 5 False >>> 1 != 5 True >>> 1 > 5 False >>> 1 < 5 True >>> 1 >= 5 False >>> 1

>>> (1 + 1 == 2) or (2 * 2 == 5) True >>> (1 + 1 == 2) and (2 * 2 == 5) False >>> (1 + 1 == 2) and not (2 * 2 == 5) True

Источник

Логические выражения и операторы

Часто в реальной жизни мы соглашаемся с каким-либо утверждением или отрицаем его. Например, если вам скажут, что сумма чисел 3 и 5 больше 7, вы согласитесь, скажете: «Да, это правда». Если же кто-то будет утверждать, что сумма трех и пяти меньше семи, то вы расцените такое утверждение как ложное.

Подобные фразы предполагают только два возможных ответа – либо «да», когда выражение оценивается как правда/истина, либо «нет», когда утверждение оценивается как ошибочное/ложное. В программировании и математике если результатом вычисления выражения может быть лишь истина или ложь, то такое выражение называется логическим.

Например, выражение 4 > 5 является логическим, так как его результатом является либо правда, либо ложь. Выражение 4 + 5 не является логическим, так как результатом его выполнения является число.

На позапрошлом уроке мы познакомились с тремя типами данных – целыми и вещественными числами, а также строками. Сегодня введем четвертый – логический тип данных (тип bool ). Его также называют булевым. У этого типа всего два возможных значения: True (правда) и False (ложь).

>>> a = True >>> type(a) >>> b = False >>> type(b)

Здесь переменной a было присвоено значение True , после чего с помощью встроенной в Python функции type() проверен ее тип. Интерпретатор сообщил, что это переменная класса bool . Понятия «класс» и «тип данных» в данном случае одно и то же. Переменная b также связана с булевым значением.

В программировании False обычно приравнивают к нулю, а True – к единице. Чтобы в этом убедиться, можно преобразовать булево значение к целочисленному типу:

Возможно и обратное. Можно преобразовать какое-либо значение к булевому типу:

>>> bool(3.4) True >>> bool(-150) True >>> bool(0) False >>> bool(' ') True >>> bool('') False

И здесь работает правило: всё, что не 0 и не пустота, является правдой.

Логические операторы

Говоря на естественном языке (например, русском) мы обозначаем сравнения словами «равно», «больше», «меньше». В языках программирования используются специальные знаки, подобные тем, которые используются в математике: > (больше), < (меньше), >= (больше или равно),

Не путайте операцию присваивания значения переменной, обозначаемую в языке Python одиночным знаком «равно», и операцию сравнения (два знака «равно»). Присваивание и сравнение – разные операции.

>>> a = 10 >>> b = 5 >>> a + b > 14 True >>> a < 14 - b False >>> a >> a != b True >>> a == b False >>> c = a == b >>> a, b, c (10, 5, False)

В данном примере выражение c = a == b состоит из двух подвыражений. Сначала происходит сравнение ( == ) переменных a и b . После этого результат логической операции присваивается переменной c . Выражение a, b, c просто выводит значения переменных на экран.

Сложные логические выражения

Логические выражения типа kbyte >= 1023 являются простыми, так как в них выполняется только одна логическая операция. Однако, на практике нередко возникает необходимость в более сложных выражениях. Может понадобиться получить ответа «Да» или «Нет» в зависимости от результата выполнения двух простых выражений. Например, «на улице идет снег или дождь», «переменная news больше 12 и меньше 20».

В таких случаях используются специальные операторы, объединяющие два и более простых логических выражения. Широко используются два оператора – так называемые логические И (and) и ИЛИ (or).

Чтобы получить True при использовании оператора and , необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет False , то и все сложное выражение будет ложным.

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

Допустим, переменной x было присвоено значение 8 ( x = 8 ), переменной y присвоили 13 ( y = 13 ). Логическое выражение y < 15 and x >8 будет выполняться следующим образом. Сначала выполнится выражение y < 15 . Его результатом будет True . Затем выполнится выражение x >8 . Его результатом будет False . Далее выражение сведется к True and False , что вернет False .

В случае с оператором or второе простое выражение проверяется, если первое вернуло ложь, и не проверяется, если уже первое вернуло истину. Так как для истинности всего выражения достаточно единственного True , неважно по какую сторону от or оно стоит.

В языке Python есть еще унарный логический оператор not , то есть отрицание. Он превращает правду в ложь, а ложь в правду. Унарный он потому, что применяется к одному выражению, стоящему после него, а не справа и слева от него как в случае бинарных and и or .

>>> a = 5 >>> b = 0 >>> not a False >>> not b True

Число 5 трактуется как истина, отрицание истины дает ложь. Ноль приравнивается к False . Отрицание False дает True .

Практическая работа

  1. Присвойте двум переменным любые числовые значения.
  2. Используя переменные из п. 1, с помощью оператора and составьте два сложных логических выражения, одно из которых дает истину, другое – ложь.
  3. Аналогично выполните п. 2, но уже с оператором or .
  4. Попробуйте использовать в логических выражениях переменные строкового типа. Объясните результат.
  5. Напишите программу, которая запрашивала бы у пользователя два числа и выводила бы True или False в зависимости от того, больше первое число второго или нет.

Примеры решения и дополнительные уроки в pdf-версии курса

Python. Введение в программирование

Источник

Читайте также:  Javascript cheat sheet pdf
Оцените статью