Основные операции с числами
Над числами можно выполнять различные операции.
>>> 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