Логический тип данных bool в Python
Встроенная класс bool() может использоваться для преобразования любого значения в логическое, если это значение можно интерпретировать как значение истинности. Если аргумент опущен вернётся False .
На заметку:
Тип bool является подтипом целого int .
x = bool(10) print(x) # True x = bool('foo') print(x) # True x = bool([0, 1, 2, 3, 4, 5, 6]) print(x) # True x = bool(0) print(x) # False x = bool('') print(x) # False x = bool([]) print(x) # False
Хороший стиль программирования на Python требует избегать таких вызовов, если в этом нет особой необходимости, как чаще всего и бывает: всегда используйте только конструкцию if x и никогда не используйте конструкции:
- if bool(x):
- if x is True:
- if x == True:
- if bool(x) == True:
В то же время можно использовать вызовы bool(x) для подсчета количества истинных элементов в последовательности, например:
def count(iter): return sum(bool(x) for x in iter)
В этом примере вызов функции bool гарантирует, что каждый элемент последовательности seq будет подсчитываться со значением 0, если он ложный или со значением 1, если он истинный, поэтому функция count(iter) более универсальна по сравнению с функцией sum(iter) .
Тип bool не позволяет наследоваться. Его единственные экземпляры — False и True .
Для пользовательского объекта реализовать поведение при проверке на его истинность можно в методе bool.
x = isinstance(True, int) print(x) # True x = isinstance(False, int) print(x) # True
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Утиная типизация ‘Duck Typing’
- Что такое вызываемый объект callable?
- Как проверить тип переменной/объекта
- Логический тип данных bool
- Целые числа int
- Ограничение длины преобразования целочисленной строки
- Вещественные числа float
- Комплексные числа complex
- Типы последовательностей
- Список list
- Кортеж tuple
- Диапазон range
- Текстовые строки str
- Словарь dict
- Множество set и frozenset
- Итератор Iterator, протокол итератора
- Генератор generator и выражение yield
- Контекстный менеджер with
- Байтовые строки bytes
- Байтовый массив bytearray
- Тип memoryview, буфер обмена
- Файловый объект file object
- Универсальный псевдоним GenericAlias
- Объект объединения Union
Логические выражения и операторы
Часто в реальной жизни мы соглашаемся с каким-либо утверждением или отрицаем его. Например, если вам скажут, что сумма чисел 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 – к единице. Чтобы в этом убедиться, можно преобразовать булево значение к целочисленному типу:
>>> int(True) 1 >>> int(False) 0
Возможно и обратное. Можно преобразовать какое-либо значение к булевому типу:
>>> 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 .
>>> x = 8 >>> y = 13 >>> y < 15 and x >8 False
В случае с оператором or второе простое выражение проверяется, если первое вернуло ложь, и не проверяется, если уже первое вернуло истину. Так как для истинности всего выражения достаточно единственного True , неважно по какую сторону от or оно стоит.
>>> y < 15 or x >8 True
В языке Python есть еще унарный логический оператор not , то есть отрицание. Он превращает правду в ложь, а ложь в правду. Унарный он потому, что применяется к одному выражению, стоящему после него, а не справа и слева от него как в случае бинарных and и or .
>>> not y < 15 False
>>> a = 5 >>> b = 0 >>> not a False >>> not b True
Число 5 трактуется как истина, отрицание истины дает ложь. Ноль приравнивается к False . Отрицание False дает True .
Практическая работа
- Присвойте двум переменным любые числовые значения.
- Используя переменные из п. 1, с помощью оператора and составьте два сложных логических выражения, одно из которых дает истину, другое – ложь.
- Аналогично выполните п. 2, но уже с оператором or .
- Попробуйте использовать в логических выражениях переменные строкового типа. Объясните результат.
- Напишите программу, которая запрашивала бы у пользователя два числа и выводила бы True или False в зависимости от того, больше первое число второго или нет.
Примеры решения и дополнительные уроки в pdf-версии курса
X Скрыть Наверх
Python. Введение в программирование
ТИПЫ ДАННЫХ В PYTHON
Кроме того, к базовым типам также относятся логический тип и тип NoneType.
Числа
Тип данных Числа имеет в Python три вида:
Целые числа
Примеры записи целых десятичных чисел:
5 20 856 57557253
Двоичные числа записывают с префиксом 0b.
Примеры записи целых двоичных чисел:
0b101 0b10100
Восьмиричные числа записывают с префиксом 0o.
Примеры записи целых восьмиричных чисел:
Шестнадцатиричные числа записывают с префиксом 0x.
Примеры записи целых шестнадцатиричных чисел:
0x5 0x14 0x4fd
Дробные числа
Дробные числа записываются с помощью точки, отделяющей целую часть от дробной.
Примеры записи дробных чисел:
0.5 3.14 65.728
Комплексные числа
Мнимая часть комплексного числа записывается с помощью постфикса j.
Примеры записи комплексных чисел:
2 + 3j 3.7 + 0.5j 45 + 0j
Строки
Строки — это последовательности символов. Строки в Python записываются в кавычках. Можно использовать пару двойных кавычек или пару одинарных (апострофов).
Каждый символ в строке имеет свой индекс (номер). Нумерация начинается с нуля.
Примеры записи строк:
"Hello"
'я люблю Python'
Списки
Списки — составной тип данных, состоящий из элементов, разделенных запятыми.
Элементы списка не обязательно должны быть одного типа. Элементом списка может быть даже другой список.
Списки в Python записываются в квадратных скобках. Каждый элемент в списке имеет свой индекс (номер). Нумерация начинается с нуля.
[2, 5, 3, 7]
[5, 3.2, 'apple', 'orange']
[7, 3, [4, 2], 9]
Кортежи
Кортежи очень похожи на списки, они состоят из элементов, разделенных запятыми.
Основным отличием кортежей от списков является то, что они неизменяемы. Они работают быстрее списков и используются в тех случаях, когда необходимо предохранить данные от перезаписи.
Кортежи в Python записываются в круглых скобках. Каждый элемент в кортеже имеет свой индекс. Индексация начинается с нуля.
(5, 8, 2, 3)
(7, 9.3, 'gold', 'silver')
(7, 3, [4, 5], 9)
Следует обратить внимание на то, что в третьем примере, элементы списка, помещенного в кортеж, будут изменяемыми.
Множества
Множества являются неупорядоченным типом данных, который может хранить только уникальные значения. Все повторы автоматически удаляются.
Множества не поддерживают индексацию, то есть элементы множества не могут иметь индексов.
Множества удобны тем, что с ними можно выполнять операции объединения, пересечения, вычитания, сравнения (находить элементы множества, отсутствующие в другом множестве, или находить элементы множества, присутствующие в другом множестве).
Множества в Python записываются в фигурных скобках.
Элементами множества могут быть числа, строки, кортежи, но не могут быть списки, множества или словари.
Словари
Словари являются неупорядоченным типом данных и состоят из пар ключ-значение.
Используя ключи можно быстро получить значения из словаря (но не наоборот). Ключом может быть любой неизменяемый тип данных (число, строка, кортеж), а значением — любой тип данных.
Пары ключ, значение в словаре разделяются двоеточием и записываются через запятую.
Словари в Python записываются в фигурных скобках.
Ключи в словаре не должны повторяться. Если ключ повторится, то предыдущее значение из словаря будет удалено.
x = print(x)
Логический тип
Логический тип (boolean) имеет два значения: истина (True) и ложь (False).
При преобразовании к логическому типу любой непустой и неравный нулю объект является истиной, а пустой или равный нулю — ложью.
True
False
Тип NoneType
Тип NoneType в Python принимает значение None, которое идентично значению Null в других языках программирования.
Проверка типа
Узнать тип объекта можно с помощью функции type().
Создадим строковый объект и напечатаем его тип.
a = 'wire' print(type(a))
Проверить тип объекта можно с помощью функции isinstance(). Функция принимает два аргумента: имя объекта и название типа. Если тип объекта и название типа совпадают, то функция возвратит логическое значение True, если не совпадают, то возвратит False.
Создадим целочисленный объект и напечатаем результат, возвращаемый функцией isinstance().
a = 5 print(isinstance(a, int))
True
Попробуем еще.
a = [5, 10, 20] print(isinstance(a, list))
Логический тип данных в Python: Boolean
Логический тип данных Boolean в Python, элементы логики, логические операторы Python.
Элементы логики
В жизни мы регулярно сталкиваемся с выражениями. Например: «Робикс — это кружок робототехники». Это верное выражение, так как это общеизвестный факт. В программировании такие выражения называются истинными.
Рассмотрим другое выражение: «Робикс — это кружок рисования». Как нам известно, это неверное выражение, то есть ложное.
Логический тип данных (тип bool) имеет всего два возможных значения: True (истина) и False (ложь).
>>> a = True >>> b = False >>> a True >>> b False
В программировании ложные выражения обычно приравнивают к нулю, а True — к единице. Чтобы в этом убедиться, можно преобразовать значения переменных к целочисленному типу:
>>> int(a) 1 >>> int(b) 0
Название логического типа данных (Boolean) принято всегда писать с заглавной буквы, так как оно связано с одним из основателей математической логики Джорджа Буля. Также с заглавной буквы пишутся значения True и False.
Логические операторы
В программировании используются специальные знаки, отражающие отношение отдельных данных (объектов):
| > | больше |
| меньше | |
| >= | больше или равно |
| меньше или равно | |
| == | равно |
| != | не равно |
Не путайте операцию присваивания значения переменной, обозначаемую в языке Python одиночным знаком «равно», и операцию сравнения (два знака «равно»). Присваивание и сравнение — это разные операции.
>>> a == b False >>> a < b False >>> a > b True
Теперь попытаемся сравнить строки:
>>> 'Ass' == 'Ase' False
Курсы Робикс, в которых изучается этот материал.
- Программирование на Python в Minecraft
- Duckietown робот с системой Автопилота
