Уроки модуля (3/4)
Числа и математический модуль
Python различает два фундаментальных числовых типа: int (произвольной точности).
целые числа — без переполнения) и float (64-битная с плавающей запятой, двойная
точность).
type(42) # <class 'int'>
type(3.14) # <class 'float'>
type(10 ** 100) # <class 'int'> — interi grandi a piacereАрифметические операторы
| Оп | Значение | Пример | Результат |
|---|---|---|---|
+ | дополнение | 2 + 3 | 5 |
- | вычитание | 5 - 2 | 3 |
* | продукт | 4 * 3 | 12 |
/ | истинное разделение | 10 / 4 | 2.5 |
// | целое деление | 10 // 4 | 2 |
% | по модулю (остаток) | 10 % 3 | 1 |
** | власть | 2 ** 10 | 1024 |
Предупреждение: / всегда возвращает float, даже с двумя целыми числами (10 / 2
возвращает 5.0, а не 5). Для целочисленного деления используйте //.
10 / 4 # 2.5
10 // 4 # 2
-7 // 2 # -4 (arrotonda verso il basso, non verso lo zero)Числовые встроенные модули
abs(-5) # 5
min(3, 1, 2) # 1
max([3, 1, 2]) # 3 (su iterabile)
round(3.7) # 4
round(3.14159, 2) # 3.14
sum([1, 2, 3]) # 6Модуль math
import math
math.pi # 3.141592653589793
math.sqrt(16) # 4.0
math.floor(3.9) # 3 (verso meno infinito)
math.ceil(3.1) # 4 (verso più infinito)
math.log(math.e) # 1.0
math.gcd(12, 18) # 6Ловушка с поплавком
Плавающие числа являются бинарными аппроксимациями: 0.1 + 0.2 не совсем равно
0.3.
0.1 + 0.2 # 0.30000000000000004
0.1 + 0.2 == 0.3 # False !Для безопасного сравнения используйте math.isclose(a, b) или, в финансовом контексте,
decimal модуль.
Точность с плавающей запятой и десятичный модуль
Плавающие числа в Python реализованы как числа двойной точности с плавающей запятой (стандарт IEEE 754). Следовательно, вычисления типа 0.1 + 0.2 дают не точно 0.3, а скорее 0.30000000000000004. Если вам требуется абсолютная математическая точность (например, для финансовых приложений), используйте модуль decimal стандартной библиотеки.
Попробуйте это
Учитывая `секунды = 3725`, вычислите `часы`, `минуты`, `оставшиеся_секунды`, используя // и %. Оцените кортеж `(часы, минуты, оставшиеся_секунды)`.
Показать подсказку
// выполняет целочисленное деление, % остаток.
Решение доступно после 3 попыток
Обзор упражнения
Учитывая `radius = 5`, вычислите площадь круга в `area`, используя math.pi. Оцените «площадь», округленную до 2 десятичных знаков с помощью round.
Показать подсказку
math.pi * радиус ** 2
Решение доступно после 3 попыток
Дополнительная задача
Import the `math` module. Calculate the square root of `16` using `math.sqrt`, add the result to the rounded value of `3.74` (using `round()`), and store the final sum in `total_val`. Finally, evaluate the variable.
Показать подсказку
math.sqrt(16) возвращает 4,0. round(3.74) возвращает 4. Суммируйте их и присвойте total_val.
Решение доступно после 3 попыток