Python — популярный высокоуровневый язык программирования. Он обладает большим набором инструментов, имеет динамическую типизацию и используется для решения любых видов задач.
Деление в Python разделяется на три вида: обычное, целочисленное и взятие остатка. Программисту не нужно заботиться о типах операндов, Python сам определяет их и приводит результат к нужному виду. Как это делается, разберемся в этой статье.
Оператор деления
Деление в Python обозначается косой чертой «/». Примечательно, что результат в консоле всегда приводится к типу «float», даже если оба операнда были целочисленного типа, об этом свидетельствует появление «.0» у полученного значения.
Это появилось в 3-ей версии Python, ранее результатом деления целых чисел было только целое число, чтобы получить дробный результат, программисты явно указывали одному из операндов тип «float», в противном случае дробная часть просто отбрасывалась.
Важно понимать, что деление в Python, как и другие операции, работает медленнее, чем в более низкоуровневых языках программирования. Это связано с высоким уровнем автоматизации и абстракции, из-за динамической типизации интерпретатор вынужден приводить числа к дробному типу «float», который требует большего количества памяти.
Деление в представлении человека отличается от его представления в компьютере. Компьютер устроен так, что все арифметические операции могут выполняться только через сложение. Это значит, что быстрее всего выполняется сложение, затем вычитание, где необходимо менять знак операндов, умножение, где число складывается много раз. Деление выполняется дольше всех, потому что помимо многократно повторяющейся операции сложения необходимо также менять знак операндов, что требует больше памяти и действий.
Примеры:
print(int(1) / int(2)) print(5 / 5) print(1 / 3) 0.5 1.0 0.3333333333333333
Из примера видно, что не смотря на то, что во всех случаях операция была между целыми числами, результатом деления в Python 3 является вещественное число. В первом случае мы даже специально использовали приведение к типу int.
Дополнительно хотелось бы отметить, что если точности типа данных float не достаточно, можно воспользоваться библиотекой decimal. В частности мы её использовали при написании программы «калькулятор» в отдельной статье.
Деление без остатка
Чтобы выполнить деление на цело в Python, можно воспользоваться целочисленным делением. В этом случае результатом будет целое число, без остатка. Целочисленное деление в Python обозначается двумя косыми чертами «//».
В отличие от других языков программирования Python позволяет результату целочисленного деления быть как целым (int), так и дробным (float) числом. В обоих случаях дробная часть отбрасывается и получается число с окончанием «.0».
Примеры нахождения целой части от деления:
print(5 // 2) print(0 // 2) print(1234 // 5.0) 2 0 246.0
В первых двух случаях деление осуществлялось между целыми числами. Поэтому в результате было получено целое число. В третьем примере одно из чисел вещественное. В этом случае в результате получаем так же вещественное число (типа float), после запятой у которого 0.
Остаток
Для получения остатка от деления в Python 3 используется операция, обозначающаяся символом процента «%». Остаток — это оставшаяся после целочисленного деления часть числа. Операция взятия остатка используется для решения различных видов задач.
Примеры:
print(10 % 3) print(5 % 10) print(5 % 0.25) 1 5 0.0
Определение остатка от деления очень часто используется в программах для нахождения, допустим, чётных чисел. Или, например, если обработка данных выполняется в цикле, и нужно выводить в консоль сообщение о ходе обработки не каждый раз, а на каждой 10-ой итерации.
Вот пример вывода чётных чисел из списка в консоль:
example_list = [3, 7, 2, 8, 1, 12] for value in example_list: if value % 2 == 0: print(value) 2 8 12
Проблемы чисел с плавающей точкой
Компьютер устроен так, что на аппаратном уровне понимает только две цифры: один и ноль. Из-за этого при делении и других операциях с дробями часто возникают проблемы. Например, 1/10 в двоичном представлении является неправильной бесконечной дробью. Её нельзя написать полностью, поэтому приходится округлять, а выбор значения при округлении ограничен нулем и единицей.
Что говорить о делении, если ошибки возникают и при операции сложения. Если сложить число «0.1» с самим собой четырнадцать раз, то получиться 1.400…01. Откуда взялась эта единица? Она появилась при переводе числа из двоичного вида в десятичный.
a = 0.1 for i in range(13): a += 0.1 print(a) 1.4000000000000001
Более технически сложное деление приводит к подобным неточностям гораздо чаще. Обычно Python округляет результат так, что пользователь не замечает этой проблемы, но если получается достаточно длинное число, то проблема проявляется.
Деление комплексных чисел
Комплексные числа — это числа вида «a + b·i». Они занимают наивысшую ступень в иерархии чисел, арифметические операции над ними существенно отличаются от операций над обычными числами.
Деление комплексного числа на обычное меняет лишь длину радиус вектора, но не его направление.
Пример:
print((5 + 8j) / 2) (2.5+4j)
Сокращенные операции деления
Чтобы упростить жизнь программистов, разработчики Python включили в язык «сокращенные операции». Их используют если надо выполнить операцию над переменной и полученный результат записать в эту же переменную. То, что записывается в длинной форме, можно записать в более короткой по следующим правилам:
Полная форма | Краткая форма | |
Деление | a = a / b | a /= b |
Целая часть | a = a // b | a //=b |
Остаток | a = a % b | a %= b |
Приведём пример:
a = 245 a %= 17 print(a) 7
Деление на ноль
Если попробовать в Python выполнить деление на 0, то мы получим исключение ZeroDivisionError.
Исключение следует обрабатывать, это можно сделать так:
try: print(24 / 0) except Exception as e: print(e) division by zero
Но в этом случае мы обрабатываем все исключения. Зачастую так делать не совсем корректно. Мы знаем, что в нашем коде возможно деление на 0 и, чтобы отловить именно эту ошибку, следует заменить except Exception as e:
на except ZeroDivisionError as e:
.
Но можно и проверять перед выполнением операции, что делитель не равен 0. Например так:
a = 14 b = None if a == 0: print('делитель равен нулю!') else: b = 345/a print('Операция выполнена, результат = ' + str(b)) Операция выполнена, результат = 24.642857142857142
Числа очень часто применяются в программирование для ведения счета в играх, представления данных в визуализации, хранение информации и т.д.
Содержание страницы: |
---|
1. Типы чисел |
2. Арифметические операторы |
2.1. Сложение и вычитание |
2.2. Умножение |
2.3. Возведение в степень |
2.4. Деление |
2.5. Деление с округлением |
2.6. Оператор вычисления остатка от деления |
3. Исключения и трассировка |
1. Типы чисел в Python.
В Python числа делятся на несколько категорий в соответствии со способом их использования. Основные это целые числа (int) и вещественные (float) или числа с плавающей точкой. Чтобы узнать к какому типу относится число или переменная, можно воспользоваться встроенной функцией type(). Запустите командную строку и активируйте Python. В скобках введите число или переменную, чтобы узнать ее тип.
>>> type(5)
<class ‘int’>
>>> type(12.5)
<class ‘float’>
>>> x = 10
>>> type(x)
<class ‘int’>
Значение 12,5 является числом с плавающей точкой, поэтому Python выводит строку float. Переменная x содержит целое число 10, поэтому Python выводит тип int (сокращение от integer).
2. Арифметические операторы Python.
В таблице перечислены арифметические операторы, среди которых встречаются некоторые знаки, не используемые в алгебре.
Операции Python | Арифметический оператор | Алгебраическое выражение | Выражение Python |
---|---|---|---|
Сложение | + | a + b | a + b |
Вычитание | — | a — b | a — b |
Умножение | * | a · b | a * b |
Возведение в степень | ** | xy | a ** b |
Деление | / | x / y | x / y |
Целочисленное деление | // | [ x / y ] | x // y |
Остаток от деления | % | r mod s | r % s |
2.1. Сложение и вычитание в Python.
Сложение и вычитание в целом выполняется и записывается, как и обычно в алгебре.
>>> 5 + 2
7
>>> 5 — 2
3
2.2. Умножение в Python( * )
В Python в качестве оператора умножения используется знак * (звездочка)
>>> 5 * 5
25
2.3. Возведение в степень в Python( ** )
В Python для возведения в степень используются два знака **.
>>> 5 ** 6
15625
>>> 81 **(1/2)
9.0
Для вычисления квадратного корня можно воспользоваться показателем степени 1/2. Корень 81 = 9.
2.4. Деление в Python ( / )
Оператор деления ( / ) делит числитель на знаменатель
>>> 10 / 2
5.0
>>> 10 / 8
1.25
♦ Важно, при делении двух любых чисел — даже если это целые числа, частным от деления которых является целое число, вы всегда получаете вещественное число.
2.5. Деление с округлением в Python( // )
Операция целочисленное деление ( // ) делит числитель на знаменатель, в результате получается наибольшее целое число, не превышающее результат. В Python дробная часть отсекается.
>>> 10 // 8
1
>>> 20 // 8
2
>>> — 17 // 4
-5
При обычном деление 10 на 8, получается результат 1,25. Python отсекает дробную часть и в итоге получаем 1.
2.6. Оператор вычисления остатка от деления ( % )
Для вычисления остатка от деления в Python используется оператор вычисления остатка от деления %
>>> 21 % 5
1
>>> 18 % 4
2
>>> 9.5 % 4.5
0.5
В данных примерах при делении 21 на 5, получается частное 4 и остаток 1. Во втором случае при делении 18 на 4, получается 4 и остаток 2. Этот оператор чаще работает с целыми числами, но также может использоваться и с другими типами.
3. Исключения и трассировка.
В Python также как и в алгебре деление на 0 запрещено. При попытке выполнения такой операции происходит исключение. Сообщая об исключение, Python выдает трассировку стека. В трассировке указано, что произошло исключение типа ZeroDivisionError, большая часть исключений заканчивается суффиксом Error. Ошибка division by zero — деление на ноль.
>>> 5 / 0
Traceback (most recent call last):
File «<stdin>», line 1, in <module>
ZeroDivisionError: division by zero
Далее: Строки и функция print в Python
Назад: Запуск программ Python в командной строке
>>> 5 -?
Числа в Python 3: целые, вещественные, комплексные. Работа с числами и операции над ними.
Целые числа (int)
Числа в Python 3 ничем не отличаются от обычных чисел. Они поддерживают набор самых обычных математических операций:
x + y | Сложение |
x — y | Вычитание |
x * y | Умножение |
x / y | Деление |
x // y | Получение целой части от деления |
x % y | Остаток от деления |
-x | Смена знака числа |
abs(x) | Модуль числа |
divmod(x, y) | Пара (x // y, x % y) |
x ** y | Возведение в степень |
pow(x, y[, z]) | xy по модулю (если модуль задан) |
Также нужно отметить, что целые числа в python 3, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти).
>>> 255 + 34 289 >>> 5 * 2 10 >>> 20 / 3 6.666666666666667 >>> 20 // 3 6 >>> 20 % 3 2 >>> 3 ** 4 81 >>> pow(3, 4) 81 >>> pow(3, 4, 27) 0 >>> 3 ** 150 369988485035126972924700782451696644186473100389722973815184405301748249
Битовые операции
Над целыми числами также можно производить битовые операции
x | y | Побитовое или |
x ^ y | Побитовое исключающее или |
x & y | Побитовое и |
x << n | Битовый сдвиг влево |
x >> y | Битовый сдвиг вправо |
~x | Инверсия битов |
Дополнительные методы
int.bit_length() — количество бит, необходимых для представления числа в двоичном виде, без учёта знака и лидирующих нулей.
>>> n = -37 >>> bin(n) '-0b100101' >>> n.bit_length() 6
int.to_bytes(length, byteorder, *, signed=False) — возвращает строку байтов, представляющих это число.
>>> (1024).to_bytes(2, byteorder='big') b'x04x00' >>> (1024).to_bytes(10, byteorder='big') b'x00x00x00x00x00x00x00x00x04x00' >>> (-1024).to_bytes(10, byteorder='big', signed=True) b'xffxffxffxffxffxffxffxffxfcx00' >>> x = 1000 >>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='little') b'xe8x03'
classmethod int.from_bytes(bytes, byteorder, *, signed=False) — возвращает число из данной строки байтов.
>>> int.from_bytes(b'x00x10', byteorder='big') 16 >>> int.from_bytes(b'x00x10', byteorder='little') 4096 >>> int.from_bytes(b'xfcx00', byteorder='big', signed=True) -1024 >>> int.from_bytes(b'xfcx00', byteorder='big', signed=False) 64512 >>> int.from_bytes([255, 0, 0], byteorder='big') 16711680
Системы счисления
Те, у кого в школе была информатика, знают, что числа могут быть представлены не только в десятичной системе счисления. К примеру, в компьютере используется двоичный код, и, к примеру, число 19 в двоичной системе счисления будет выглядеть как 10011. Также иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:
- int([object], [основание системы счисления]) — преобразование к целому числу в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.
- bin(x) — преобразование целого числа в двоичную строку.
- hex(х) — преобразование целого числа в шестнадцатеричную строку.
- oct(х) — преобразование целого числа в восьмеричную строку.
Примеры:
>>> a = int('19') # Переводим строку в число >>> b = int('19.5') # Строка не является целым числом Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '19.5' >>> c = int(19.5) # Применённая к числу с плавающей точкой, отсекает дробную часть >>> print(a, c) 19 19 >>> bin(19) '0b10011' >>> oct(19) '0o23' >>> hex(19) '0x13' >>> 0b10011 # Так тоже можно записывать числовые константы 19 >>> int('10011', 2) 19 >>> int('0b10011', 2) 19
Вещественные числа (float)
Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:
>>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 0.9999999999999999
Для высокой точности используют другие объекты (например Decimal и Fraction)).
Также вещественные числа не поддерживают длинную арифметику:
>>> a = 3 ** 1000 >>> a + 0.1 Traceback (most recent call last): File "", line 1, in OverflowError: int too large to convert to float
Простенькие примеры работы с числами:
>>> c = 150 >>> d = 12.9 >>> c + d 162.9 >>> p = abs(d - c) # Модуль числа >>> print(p) 137.1 >>> round(p) # Округление 137
Дополнительные методы
float.as_integer_ratio() — пара целых чисел, чьё отношение равно этому числу.
float.is_integer() — является ли значение целым числом.
float.hex() — переводит float в hex (шестнадцатеричную систему счисления).
classmethod float.fromhex(s) — float из шестнадцатеричной строки.
>>> (10.5).hex() '0x1.5000000000000p+3' >>> float.fromhex('0x1.5000000000000p+3') 10.5
Помимо стандартных выражений для работы с числами (а в Python их не так уж и много), в составе Python есть несколько полезных модулей.
Модуль math предоставляет более сложные математические функции.
>>> import math >>> math.pi 3.141592653589793 >>> math.sqrt(85) 9.219544457292887
Модуль random реализует генератор случайных чисел и функции случайного выбора.
>>> import random >>> random.random() 0.15651968855132303
Комплексные числа (complex)
В Python встроены также и комплексные числа:
>>> x = complex(1, 2) >>> print(x) (1+2j) >>> y = complex(3, 4) >>> print(y) (3+4j) >>> z = x + y >>> print(x) (1+2j) >>> print(z) (4+6j) >>> z = x * y >>> print(z) (-5+10j) >>> z = x / y >>> print(z) (0.44+0.08j) >>> print(x.conjugate()) # Сопряжённое число (1-2j) >>> print(x.imag) # Мнимая часть 2.0 >>> print(x.real) # Действительная часть 1.0 >>> print(x > y) # Комплексные числа нельзя сравнить Traceback (most recent call last): File "", line 1, in TypeError: unorderable types: complex() > complex() >>> print(x == y) # Но можно проверить на равенство False >>> abs(3 + 4j) # Модуль комплексного числа 5.0 >>> pow(3 + 4j, 2) # Возведение в степень (-7+24j)
Для работы с комплексными числами используется также модуль cmath.
Для вставки кода на Python в комментарий заключайте его в теги <pre><code class=»python3″>Ваш код</code></pre>
Содержание:развернуть
- Сложение (+)
- Вычитание (-)
- Умножение (*)
- Деление (/)
- Целочисленное деление (//)
- Остаток от деления (%)
- Возведение в степень (**)
Умение эффективно применять математические операции в рамках программирования – важный навык, который необходимо развивать, потому как с числами предстоит работать постоянно. Алгоритмы, функции, теория множеств, алгебра логики, комбинаторика и статистика — программисты пользуются ими регулярно и повсеместно.
Но не всё так страшно. Да, понимание математики на высоком уровне помогает стать высококвалифицированным программистом, но оно не является для этого обязательным условием. Тем не менее базовые вещи знать придётся. А в основе всех мощных математических инструментов лежат простые и понятные операции.
Сложение (+)
И самая простая и понятная из них — сложение. Никаких «подводных камней»: берём два или более чисел, пишем между ними знак «+» и присваиваем результат выражения переменной (или сразу выводим сумму на экран):
x = 5
y = 3
z = x + y
print(z)
> 8
Сложим несколько вещественных чисел и выведем их на экран без предварительной инициализации результирующей переменной:
q = 4.5
w = 2.5
e = 2.5
r = 0.5
print(q + w + e + r)
> 10.0
Вообще говоря, если хотя бы одно из слагаемых — число вещественное, то вещественным будет и весь результат.
num1 = 10
num2 = 15
num3 = 10.0
sum = num1 + num2 + num3
print(sum)
> 35.0
print(type(sum))
> <class 'float'>
Вычитание (-)
Вычитание – это обратная операция сложению. Оператором выступает знак «-«:
a = 15
b = 25
c = a - b
print(c)
> -10
С вещественными числами здесь та же ситуация: если хотя бы один операнд имеет тип float
, то и результат будет float
:
i = 10
j = 5
k = 0.0 # вещественный ноль
print(i - j - k)
> 5.0
print(type(i - j - k))
> <class 'float'>
Умножение (*)
Как и две предыдущие операции, умножение в Python не таит в себе никаких скрытых или неочевидных особенностей. Умножаем два или более чисел при помощи оператора «звёздочка» (*):
# в этот раз обойдёмся без создания переменных
print(2 * 2)
> 4
print(2 * 2.0)
> 4.0
print(10000 * 0)
> 0
print(-33 * 3)
> -99
Деление (/)
Сложение, вычитание и умножение тривиальны, а вот с делением не всё так просто. В Python существует три вида деления и столько же разных операторов. Начнём с истинного деления, за которое отвечает оператор «/«. Его главным отличием является то, что, вне зависимости от типов операндов, будет возвращен вещественный результат (float
).
print(8/2)
> 4.0
# делимое и делитель — int числа, а частое — float
print(type(8/2))
> <class 'float'>
print(8/3)
> 2.6666666666666665
Этот вид деления наиболее близок к обычному и знакомому нам математическому. И здесь тоже нельзя делить на ноль:
print(8/0)
> ZeroDivisionError: division by zero
💁 Немного истории. В старых версиях Питон оператор «/» выполнял операцию классического деления: т.е. он делил целочисленно и усекал дробную часть в том случае, когда делимое и делитель были целыми. Если же операнды принадлежали к множеству вещественных чисел, то проводилось деление с сохранением дробной части, и результат был float.
Разработчики отказались от классического деления в Python 3.0 и вместо него добавили истинное деление. Архитекторы языка пошли на такой шаг по той причине, что в предыдущей модели классического деления результаты напрямую зависели от типов операндов. Из-за этого возникали трудности с их предварительной идентификацией и оценкой, что было особенно критично для Питона, как для языка с динамической типизацией.
Целочисленное деление (//)
Оператор «//» возвращает int
, если оба операнда — целые числа, и float
— если хотя бы один операнд является вещественным числом. В любом из вариантов дробная часть будет отброшена, а результат округлён вниз.
print(15//2)
# видно, что результат округлился в меньшую сторону
> 7
# и остался целочисленным, поскольку и делимое, и делитель — int числа
print(type(15//2))
> <class 'int'>
При изменении любого из операндов на вещественное число, результат также изменится и станет float
:
print(15//3.1)
> 4.0
print(type(15//3.1))
> <class 'float'>
Об округлении вниз важно помнить, когда работа идёт с отрицательными числами:
print(5//-2)
> -3
print(5//2)
> 2
На ноль всё ещё нельзя делить:
print(15//0)
> ZeroDivisionError: integer division or modulo by zero
Остаток от деления (%)
Остаток от деления ещё называют делением по модулю. Оператор «%» сначала делит, а затем возвращает остаток.
print(21 % 3)
> 0
print(21 % 5)
> 1
print(21 % 0)
> ZeroDivisionError: integer division or modulo by zero
Остаток может не быть целочисленным:
print(21.3 % 3)
> 0.3000000000000007
Но вся прелесть данного оператора заключается не в возвращаемом им значении остатка.
Главная фишка деления по модулю в том, что с его помощью легко проверяется факт делимости одного числа на другое
А отсюда вытекают и проверки на чётность/нечётность:
import random
def parity_check(num):
"""
функция, проверяющая четность числа.
Любое четное число делится на 2 без остатка.
"""
if num % 2 == 0:
return 'Число чётное'
else:
return 'Число нечётное'
# сгенерируем случайное число и проверим работу функции
rnum = random.randint(0, 100)
print(rnum)
print(parity_check(rnum))
> 62
> Число чётное
💭 Проверка числа на чётность/нечётность будет часто встречаться в вашей работе.
Возведение в степень (**)
Нетипичный оператор для большинства других языков программирования. Тем он и удобен. Парная «звёздочка» (**) выполняет классическое математическое возведение числа «a» в степень «b»:
a = 2
b = 10
print(a ** b)
> 1024
И показатель степени, и основание могут быть отрицательными:
a = 10
b = -2
print(a ** b)
> 0.01
a = -10
b = 3
print(a ** b)
> - 1000
И дробными:
# степень 0.5 аналогична квадратному корню
a = 100
b = 0.5
print(a ** b)
> 10.0
a = 0.5
b = 2
print(a ** b)
> 0.25
Операндов у возведения в степень также может быть несколько. В таком случае, оператор «**» работает, как право-ассоциативный (т.е. операции выполняются справа-налево):
print(2 ** 2 ** 3)
# Сначала выполняется 2 ** 3, а затем уже 2 ** 8.
> 256
В завершении — про приоритет операций. Если в выражении используются разные операторы, то порядок их выполнения будет следующим:
- возведение в степень;
- умножение, деление, целочисленное деление и деление по модулю;
- сложение и вычитание.
Все числовые типы, кроме сложных, поддерживают следующие операции согласно их приоритетам выполнения:
x + y
Результатом будет сумма чиселx
иу
x - y
Результатом будет разница чиселx
иу
x * y
Результатом будет произведение чиселx
иу
x / y
Результатом будет частное чиселx
иу
x // y
Результатом будет делениеx / y
с округлением результата до ближайшего целого в меньшую сторону. Операцию называют «целочисленным делением».
Результирующее значение является целым целым числом, хотя тип результата не обязательно являетсяint
.
Результат всегда округляется до минус бесконечности:1 // 2
равно0
,(-1) // 2
равно-1
,1 // (-2)
равно-1
,(-1) // (-2)
равно0
.x % y
Результатом будет остаток от деления чиселx / y
.-x
Результатом будет отрицательное значениеx
.+x
В результате числоx
останется без изменений.abs(x)
Результатом будет абсолютное значение или величинаx
.int(x)
В результате числоx
преобразуется в целое числоint
.
В качестве аргумента допускается использовать принятые числовые литералы включающие цифры от0
до9
или любой эквивалент Юникода.
Преобразование вещественного числа в целое число может округляться или усекаться, как в C. Для четко определенных преобразований используйтеmath.floor()
иmath.ceil()
float(x)
В результате числоx
преобразуется в число с плавающей точкойfloat
.
В качестве аргумента допускается использовать принятые числовые литералы включающие цифры от0
до9
или любой эквивалент Юникода.
Функция также принимает строки'nan'
— не число и'inf'
— положительная или отрицательная бесконечность, с необязательным префиксом+
или-
.complex(real, image)
Результатом будет комплексное число с вещественной частьюreal
, мнимой частьюimage
.
В качестве аргумента допускается использовать принятые числовые литералы включающие цифры от 0 до 9 или любой эквивалент Юникода.c.conjugate()
Результатом будет сопряженное комплексное числос
.divmod(x, y)
Результатом будет пара(x // y, x % y)
.pow(x, y)
Результатом будет числоx
в степениу
. Python определяет0 ** 0
как равное1
, как это обычно бывает для языков программирования.x ** y
Результатом будет числоx
в степениу
. Python определяетpow(0, 0)
как равное1
, как это обычно бывает для языков программирования.
Внимание!. Комплексным числам (тип complex
) недоступны операции: //
— деление без остатка , %
— остаток от деления, int()
, float()
, divmod()
.
Примеры использования:
Синтаксис арифметических выражений прост. Операторы +
, -
, *
и /
работают так же, как и в большинстве других языков программирования, круглые скобки ()
могут быть использованы для группировки выражений.
>>> 2 + 2 # 4 >>> 50 - 5*6 # 20 >>> (50 - 5*6) / 4 # 5.0 # деление всегда возвращает тип float >>> 8/5 # 1.6
Целые числа, например 2, 4, 20 имеют тип int
, числа с дробной частью, например 5.0, 1.6 имеют тип float
.
Деление /
всегда возвращает тип float
(число с плавающей запятой). Для получения целой части числа, полученного в результате деления (floor division
— округление результата до ближайшего целого в меньшую сторону) вы можете использовать оператор //
, для расчета остатка вы можете использовать оператор %
# классическое деление >>> 17 / 3 # 5.666666666666667 # целочисленное деление >>> 17 // 3 # 5 # возвращает остаток от деления >>> 17 % 3 # 2
С помощью Python можно использовать оператор **
для вычисления степеней
# 5 в квадрате >>> 5 ** 2 # 25 # 2 в степени 7 >>> 2 ** 7 # 128
Знак равенства =
используется для присвоения значения переменной.
>>> width = 20 >>> height = 5 * 9 >>> width * height # 900
Если переменная не определена, т. е. ей не присвоено значение, попытка использовать ее приведет к ошибке.
# переменная 'x' не определена # ей не присвоено значение, а значит # Python ничего про нее не знает >>> x # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # NameError: name 'x' is not defined
Существует полная поддержка операций с плавающей запятой, операции с числами смешанного типа преобразуют результат в число с плавающей точкой.
В интерактивном режиме последнее печатное выражение присваивается переменной _
— символ подчеркивания. Это означает, что при использовании Python в качестве калькулятора несколько проще продолжить вычисления, например:
>>> tax = 12.5 / 100 >>> price = 100.50 >>> price * tax # 12.5625 >>> price + _ # 113.0625 >>> round(_, 2) # 113.06
Переменная _
должна рассматриваться как доступная только для чтения. Не присваивайте ей явно значение, иначе вы создадите независимую локальную переменную с тем же именем, маскируя встроенную переменную с ее магическим поведением. Эта магическая переменная нередко используется в коде для скрытия неиспользуемых данных.
client = [(1, 'shopkeeper', 'Michael Palin'), (2, 'client', 'John Cleese'), (3, 'sketch', 'Cheese Shop Sketch')] for num, _, name in client: print(num, name) # 1 Michael Palin # 2 John Cleese # 3 Cheese Shop Sketch
Помимо int
и float
, Python поддерживает другие типы чисел, такие как Decimal
и Fraction
. Python также имеет встроенную поддержку комплексных complex
чисел и использует суффикс j или J для обозначения мнимой части, например, 3+5j
.