Основные операции с числами

Над числами можно выполнять различные операции.

>>> 11 / 2 ①
5.5
>>> 11 // 2 ②
5
>>> −11 // 2 ③
−6
>>> 11.0 // 2 ④
5.0
>>> 11 ** 2 ⑤
121
>>> 11 % 2 ⑥
1

Оператор / выполняет деление чисел с плавающей точкой. Он возвращает значение типа float, даже если и делимое, и делитель, имеют тип int.
Оператор // выполняет целочисленное деление необычного вида. Когда результат положительный, можете считать, что он просто отбрасывает (не округляет) дробную часть, но будьте осторожны с этим.
Когда выполняется целочисленное деление отрицательных чисел, оператор // округляет результат до ближайшего целого в «большую» сторону. С математической точки зрения, это конечно же округление в меньшую сторону, т. к. −6 меньше чем −5; но это может сбить вас с толку, и вы будете ожидать, что результат будет «округлён» до −5.
Оператор // не всегда возвращает целое число. Если хотя бы один из операндов — делимое или делитель — будет типа float, то хотя результат и будет округлён до ближайшего целого, в действительности он также будет иметь тип float.
Оператор ** выполняет возведение в степень. 112 — это 121.
Оператор % возвращает остаток от целочисленного деления. 11, делённое на 2, даёт 5 и 1 в остатке, поэтому здесь результат — 1.

 

В Python 2, оператор / обычно означает целочисленное деление, но добавив в код специальную директиву можно заставить его выполнять деление с плавающей точкой. В Python 3, оператор / всегда означает деление с плавающей точкой. См. PEP 238.

Дроби

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

>>> import fractions ①
>>> x = fractions.Fraction(1, 3) ②
>>> x
Fraction(1, 3)
>>> x * 2 ③
Fraction(2, 3)
>>> fractions.Fraction(6, 4) ④
Fraction(3, 2)
>>> fractions.Fraction(0, 0) ⑤
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "fractions.py", line 96, in __new__
raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
ZeroDivisionError: Fraction(0, 0)

Перевод сообщения оболочки:

Раскрутка стека (список последних вызовов):

Файл "<stdin>", строка 1, в <модуль>

Файл "fractions.py", строка 96, в __new__

raise ZeroDivisionError('Дробь(%s, 0)' % числитель)

ZeroDivisionError: Дробь(0, 0)

Перед началом использования дробей, импортируйте модуль fractions.
Чтобы определить дробь, создайте объект класса Fraction и передайте ему числитель и знаменатель.
С дробями можно выполнять все обычные математические операции. Все они возвращают новый объект класса Fraction.
Объект Fraction автоматически сократит дроби.
У Python хватает здравого смысла, чтобы не создавать дроби с нулевым знаменателем.

Тригонометрия

Ещё в Python можно работать с основными тригонометрическими функциями.

>>> import math
>>> math.pi ①
3.1415926535897931
>>> math.sin(math.pi / 2) ②
1.0
>>> math.tan(math.pi / 4) ③
0.99999999999999989