- Ветвления¶
- Операции отношения¶
- Таблицы истинности логических операций¶
- Условный оператор¶
- Задачи¶
- ПОБИТОВЫЕ ОПЕРАТОРЫ В PYTHON (поразрядная конъюнкция и другие)
- Побитовое И (поразрядная конъюнкция)
- Побитовое ИЛИ (поразрядная дизъюнкция)
- Побитовое исключающее ИЛИ (XOR)
- Побитовое НЕ
- Побитовый сдвиг влево
- Побитовый сдвиг вправо
- Арифметика и логика
- Логика
- Поразрядные операции
Ветвления¶
В языке Python логический тип данных представлен типом bool (бул, булев тип, булевый тип).
Объекты типа bool могут принимать одно из двух значений: True (истина) или False (ложь).
Операции отношения¶
Существует ряд операций, результатом вычисления которых являются объекты типа bool . Рассмотрим некоторые из них:
- Операции отношения: < , , >= .
- Проверка объектов на равенство. Операция == возвращает True , если ее операнды имеют одинаковые значения. Обратная ей операция — != :
>>> a = 4 >>> b = 2 >>> a == b False >>> a != b True
Таблицы истинности логических операций¶
Логическое «И» (конъюнкция, логическое умножение)
Логическое «ИЛИ» (дизъюнкция, логическое сложение)
Логическое «НЕ» (инверсия, отрицание)
Условный оператор¶
Чаще всего логические выражения и операции отношения используются в условных конструкциях. В общем виде конструкция выглядит так:
if условие1: # Блок кода, выполняющийся в случае, # если принимает значение True elif условие2: # . # . else: # Блок кода, выполняющийся в случае, # если все предыдущие условия принимают значение False # Этот блок должен идти последним.
Блоки elif и else необязательны.
Важно: блоки кода в Python оформляются с отступами в 4 пробела (вставить такой отступ можно нажатием клавиши ).
К условию относится только код, написанный с отступом. Сравните две записи:
# 1 if False: print('1') print('2') # 2 if False: print('1') print('2')
Задачи¶
- Пользователь вводит число. Приложение сообщает, является это число положительным, отрицательным или нулем.
- Пользователь вводит номер месяца, приложение сообщает, какое это время года. Весна (3,4,5), лето (6,7,8), осень (9,10,11) зима (12,1,2)). Пример:
Номер месяца: 6 Лето Номер месяца: 12 Зима Номер месяца: 13 Такого месяца нет
Часы: 2 Минуты: 25 Секунды: 13 Все верно. Время 2:25:13 Часы: 25 Минуты: 70 Секунды: 59 Ошибка! Часы должны быть в диапазоне [0:23] Минуты должны быть в диапазоне [0:59]
Число а: 17 Операция: + Число b: 10 Результат: 17 + 10 = 27
© Copyright Revision d00c0df4 .
Versions latest Downloads html On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
ПОБИТОВЫЕ ОПЕРАТОРЫ В PYTHON (поразрядная конъюнкция и другие)
Побитовые операторы работают с данными в битовом (двоичном) формате и действуют бит за битом.
Всего этих операторов шесть:
& | побитовое И (побитовое умножение, поразрядная конъюнкция) |
| | побитовое ИЛИ (побитовое сложение, поразрядная дизъюнкция) |
^ | побитовое исключающее ИЛИ (побитовая сумма по модулю два, XOR) |
~ | побитовое НЕ (побитовая инверсия, поразрядная инверсия) |
> | побитовый сдвиг вправо |
Битовые операции используются в криптографических алгоритмах, сетевых технологиях и др.
Побитовое И (поразрядная конъюнкция)
Число 10 в двоичной системе — 1010, а число 6 — 110.
После поразрядного перемножения получим 0010. В десятичной системе это 2.
Побитовое ИЛИ (поразрядная дизъюнкция)
Число 10 в двоичной системе — 1010, а число 6 — 110.
После поразрядного сложения получим 1110. В десятичной системе это 14.
Побитовое исключающее ИЛИ (XOR)
Принцип поразрядного исключающего ИЛИ
0 + 0 = 0 |
0 + 1 = 1 |
1 + 0 = 1 |
1 + 1 = 0 |
Пример с поразрядным исключающим ИЛИ:
Число 10 в двоичной системе — 1010, а число 6 — 110.
После поразрядного сложения по модулю два получим 1100. В десятичной системе это 12.
Побитовое НЕ
Положительные числа преобразуются в отрицательные со сдвигом на единицу, и наоборот.
Побитовый сдвиг влево
Позволяет сдвинуть битовое представление числа на несколько разрядов влево. Операции сдвига применяются только к целым числам.
Пример сдвига влево на 2 разряда:
Число 10 в двоичной системе — 1010.
После поразрядного сдвига влево на два разряда получим 101000 (справа добавится два разряда с нулями). В десятичной системе это 40.
Побитовый сдвиг вправо
Позволяет сдвинуть битовое представление числа на несколько разрядов вправо. Операции сдвига применяются только к целым числам.
Пример сдвига вправо на 2 разряда:
Число 10 в двоичной системе — 1010.
После поразрядного сдвига вправо на два разряда получим 10 (два правых разряда просто исчезнут). В десятичной системе это 2.
Арифметика и логика
Всё более-менее стандартно по модулю одной особенности: неполное частное — результат округления соответствующей дроби вниз, а не к нулю (как принято в большинстве языков программирования). При этом всегда выполняется
Следует быть аккуратным со следующими операторами:
- с делением ( / ): его результат — число с плавающей точкой; арифметика с плавающей точкой на практике не пригодна ни для каких целей, кроме физического моделирования; любое другое использование арифметики с плавающей точкой требует высокой аккуратности и глубокого понимания её устройства
- с остатком ( % ): у него есть оператор-омоним, форматирующий текст; применяется этот самый форматирующий оператор, если левый операнд имеет текстовый тип
Логика
В качестве основных логических значений используются «истина» True и «ложь» False . К ним можно применять конъюнкцию ( & или and ), дизъюнкцию ( | или or ), сложение ^ и отрицание not .
Отдельно выделим and и or : они вычисляют свой правый операнд только если левый истинный (для and ) и ложный (для or ). Ложными считаются None , False , всевозможные нули и всевозможные пустые контейнеры.
Остальные объекты встроенных типов считаются истинными.
Также можно встретить двуинфиксный тернарный оператор . if . else . :
- первым делом он вычисляет свой второй операнд
- если он истинный, то вычисляется первый операнд
- в противном случае вычислятеся второй операнд
- A and B эквивалентно B if A else A
- not A эквивалентно False if A else True
- A or B эквивалентно B if not A else A
Поскольку это — единственный чисто тернарный оператор в языке, его так и называют «тернарным оператором».
Поразрядные операции
Сильно упрощают работу с цепочками бит, которые можно моделировать числами, двоичными записями которых эти цепочки являются.
Основные поразрядные операции в языке следующие:
- :& — поразрядная конъюнкция (результат состоит из тех и только тех двоичных разрядов, которые есть в обоих входных числах)
- 😐 — поразрядная дизъюнкция (результат состоит из тех и только тех двоичных разрядов, которые есть хотя бы в одном из входных чисел)
- :^ — поразрядный XOR (результат состоит из тех и только тех двоичных разрядов, которые есть ровно в одном из двух входных чисел)
- :
- :>> — сдвиг вправо (с уничтожением младших разрядов)
Рекомендуется их применять лишь к целым неотрицательным числам.