Статья содержит описание основных операторов языка python, таких как остаток от деления python, логические, побитовые операторы и т.д. Приведены примеры использования операторов и пояснены некоторые тонкости их использования.
- Введение в операторы Python
- Арифметические операторы Python
- Сложение
- Вычитание
- Умножение
- Деление
- Возведение в степень
- Деление без остатка
- Деление по модулю (остаток от деления)
- Операторы сравнения
- Оператор «меньше»
- Оператор «больше»
- Оператор «меньше или равно»
- Оператор «больше или равно»
- Оператор «равно»
- Оператор «не равно»
- Операторы присваивания
- Простое присваивание
- Сложение и присваивание
- Вычитание и присваивание
- Деление и присваивание
- Умножение и присваивание
- Деление по модулю и присваивание
- Возведение в степень и присваивание
- Деление с остатком и присваивание
- Логические операторы python
- И (and)
- Или (or)
- Не (not)
- Операторы принадлежности (членства)
- В (in)
- Нет в (not in)
- Операторы тождественности
- Это (is)
- Это не (is not)
- Битовые операторы python
- Бинарное «и»
- Бинарное «или»
- Бинарное «или нет»
- Инвертирующий оператор
- Бинарный сдвиг влево
- Бинарный сдвиг вправо
Введение в операторы Python
В языке программирования python, как и во всех остальных, есть различные операторы. Большинство из них выглядят стандартно и привычно: арифметические операции везде обозначаются одинаково, а, например, для остатка от деления в python зарезервирован знак %. Но рассмотрим же подробнее все стандартные и наиболее часто используемые операторы языка python.
Операторы языка Питон подразделяются на 7 видов:
- Знаки арифметических операций
- Сравнительные
- Присваивающие
- Логические
- Операторы принадлежности (или членства, или вложенности)
- Тождественные
- Битовые (или бинарные)
Арифметические операторы Python
Данные операторы выполняют операции сложения, умножения, вычитания, деления, вычисления остатка от деления и возведения в степень над числами. Сложение и умножение также работает и для строк.
Рассмотрим примеры работы различных операторов (в качестве среды разработки в примерах используется Visual Studio 2019). Синтаксис python позволяет сразу же вычислять результат операции без присвоения его какой-либо переменной; это свойство будет использовано в некоторых примерах. Также не нужно производить import каких-либо библиотек: все основные команды python являются стандартными и зарезервированными.
Сложение
Складываем один и два:
print(1 + 2)
# Вывод:
3
Вычитание
Вычитаем из четырёх два:
print(4 - 2)
# Вывод:
2
Умножение
Умножаем десять на пять:
print(10 * 5)
# Вывод:
50
Деление
Делим двадцать четыре на шесть:
print(24 / 6)
# Вывод:
4.0
Примечание. Результат деления в Python 3 и выше всегда приводится к типу float (число с плавающей запятой), который требует большее количество памяти, чем, например, целочисленный тип int, в связи с чем деление (и другие операции) в питон работает медленнее, чем в более низкоуровневых языках.
Возведение в степень
Возводим семь во вторую степень (или в квадрат):
print(7 ** 2)
# Вывод:
49
Деление без остатка
Ищем целую часть от деления семи на два:
print(7 // 2)
# Вывод:
3
Примечание. Python отличается от других языков тем, что в нём результат целочисленного деления может быть как целым числом, так и числом с плавающей запятой. Например, если поделить число типа int на число типа float, то результатом будет число типа float:
print(70 // 2.0)
# Вывод:
35.0
Одно из чисел вещественное в этом — в этом и состоит загвоздка. В таком случае ответ обязан быть вещественным числом.
Деление по модулю (остаток от деления)
Ищем остаток от деления семи на два:
print(7 % 2)
# Вывод:
1
Операторы сравнения
Эти операторы сравнивают 2 значения (строковые или числовые). Любой из операторов данного типа возвращает булевое значение — True или False.
Оператор «меньше»
print(13 < 15)
# Вывод:
True
13 меньше, чем 15 — это верно.
print(13 < 12)
# Вывод:
False
13 меньше, чем 12 — это не верно.
Оператор «больше»
print(13 > 13)
# Вывод:
False
13 меньше, чем 13 — это не верно.
print(13 > 10)
# Вывод:
True
13 меньше, чем 10 — это верно.
Оператор «меньше или равно»
print(13 <= 17)
# Вывод:
True
13 меньше или равно 17 — это верно.
print(13 <= 1)
# Вывод:
False
13 меньше или равно 1 — это не верно.
Оператор «больше или равно»
print(13 >= 13)
# Вывод:
True
13 большее или равно 13 — это верно.
print(13 >= 17)
# Вывод:
False
13 большее или равно 17 — это не верно.
Оператор «равно»
print(13 == 13)
# Вывод:
True
13 равно 13 — это верно.
print(13 == 14)
# Вывод:
False
13 равно 14 — это не верно.
Оператор «не равно»
print(13 != 13)
# Вывод:
False
13 не равно 13 — это не верно.
print(13 != 14)
# Вывод:
True
13 не равно 14 — это верно.
Операторы присваивания
Эти операторы присваивают значение правого операнда левому. Только один-единственный оператор просто присваивает значение — это знак «=» (равно). Все остальные предварительно выполняют какое-либо арифметическое действие между двумя операндами, и получившийся результат записывается в левый операнд.
Простое присваивание
Присвоим переменным значения, с которыми будут работать другие операторы дальше:
a = 100
b = 25
print(a, b)
# Вывод:
100 25
Сложение и присваивание
Значение переменной b складывается со значением переменной a, после чего результат записывается в a:
a += b
print(a)
# Вывод:
125
Вычитание и присваивание
Значение переменной b вычитается из значения переменной a, после чего результат записывается в a:
a -= b
print(a)
# Вывод:
75
Деление и присваивание
Значение переменной a делится на значение переменной b, после чего результат записывается в a:
a /= b
print(a)
# Вывод:
4.0
Умножение и присваивание
Значение переменной a умножается на значение переменной b, после чего результат записывается в a:
a *= b
print(a)
# Вывод:
2500
Деление по модулю и присваивание
Значение переменной a делится на значение переменной b, после чего остаток от деления записывается в a:
a %= b
print(a)
# Вывод:
0
a = 68
b = 23
a %= b
print(a)
# Вывод:
22
Возведение в степень и присваивание
Значение переменной a возводится в степень, равную значению переменной b, после чего результат записывается в a:
a **= b
print(a)
# Вывод:
100000000000000000000000000000000000000000000000000
Деление с остатком и присваивание
Значение переменной a делится на значение переменной b, после чего целая часть результата деления записывается в a:
a //= b
print(a)
# Вывод:
4
a = 68
b = 23
a //= b
print(a)
# Вывод:
2
Логические операторы python
Логических операторов в python, как и в математической логике, всего 3 — «и», «или», «не», в Python это их английские аналоги — and, or, not. Результат выполнения этих операций соответствует таблице истинности.
И (and)
a = (1 + 3 == 4) and (2 * 2 == 6)
print(a)
# Вывод:
False
Результатом этой операции оказалось False, так как для оператора and необходимо, чтобы оба операнда были равны True. Тогда и только тогда вернётся True.
Или (or)
a = (1 + 3 == 4) or (2 * 2 == 6)
print(a)
# Вывод:
True
Результатом этой операции оказалось True, ведь для оператора «or» достаточно, чтобы лишь один из операндов был равен True.
Не (not)
a = (1 + 3 == 4) and not (2 * 2 == 6)
print(a)
# Вывод:
True
Так как наш «неверный» правый операнд в результате применения к нему операции not изменил своё значение на True, то верным стало и всё выражение целиком.
Операторы принадлежности (членства)
Эти операторы проверяют, существует ли заданное значение в известном списке, словаре, кортеже или строке. Можно сказать, что таковых в питон всего 2 — это in и его отрицание not in. Соответственно, in вернёт True в случае наличия элемента в последовательности, а not in, наоборот, вернёт False, если данный элемент есть в последовательности, и True, если его нет.
В (in)
a = "abc" in "abcdef"
print(a)
# Вывод:
True
Строка «abc» является подстрокой строки «abcdef», соответственно, являясь подпоследовательностью данной последовательности.
a = 10 in (1, 7, 13, 6)
print(a)
# Вывод:
False
Числа 10 нет в этом списке, потому мы и видим False.
Нет в (not in)
a = 10 not in (1, 7, 13, 6)
print(a)
# Вывод:
True
Элемента 10 нет в данном списке, поэтому операция вернёт True. А если он будет:
a = 10 not in (1, 7, 13, 6, 10)
print(a)
# Вывод:
False
В этом списке уже есть значение 10, поэтому оператор непринадлежности возвращает False.
a = "abc" not in "abcdef"
print(a)
# Вывод:
False
Операторы тождественности
Их, как и операторов принадлежности, всего два, и один из них является отрицанием другого. Оператор в python is сравнивает положение двух объектов в памяти и выясняет, один и тот же ли это объект, в случае успеха возвращая True. Оператор not is вернёт True, если проверка показала, что сравниваемые объекты являются разными (имеют разное расположение в памяти).
Это (is)
print("10" is '10')
# Вывод:
True
Разные кавычки не влияют на результат выполнения операции, так как это в любом случае строка, один и тот же объект. Но если сравнить строку и число, результат будет иным:
print(10 is '10')
# Вывод:
False
Это действительно разные объекты, находящиеся в разных местах памяти.
Это не (is not)
print(20 is not (20 + 1))
# Вывод:
True
Верно, ведь 20 не равно 21.
Битовые операторы python
Побитовые python операторы работают только с целыми числами, причём особым образом: значения операндов переводятся в двоичную систему, после чего операция выполняется последовательно для каждого бита. После окончания операции значение переводится обратно в десятичную систему и может быть возвращено в качестве результата операции.
Всего в питон 6 побитовых операторов:
- & — бинарное «и»
- | — бинарное «или»
- ^ — бинарное «или нет» (исключающее ИЛИ, или XOR)
- ~ — инвертирующий оператор (отрицание, для него требуется только один операнд)
- << — бинарный сдвиг влево
- >> — бинарный сдвиг вправо
Бинарное «и»
print(1 & 2)
# Вывод:
0
Бинарное «или»
print(1 | 2)
# Вывод:
3
Бинарное «или нет»
print(1 ^ 2)
# Вывод:
3
Инвертирующий оператор
print(~1)
# Вывод:
-2
Бинарный сдвиг влево
print(1 << 2)
# Вывод:
4
Бинарный сдвиг вправо
print(1 >> 2)
# Вывод:
0