Перейти к основному содержимому
Модуль 4 · Урок 3 из 415/36 в курсе~10 min
Уроки модуля (3/4)

Числа и математический модуль

Python различает два фундаментальных числовых типа: int (произвольной точности). целые числа — без переполнения) и float (64-битная с плавающей запятой, двойная точность).

Python
type(42)       # <class 'int'>
type(3.14)     # <class 'float'>
type(10 ** 100)  # <class 'int'>   — interi grandi a piacere

Арифметические операторы

ОпЗначениеПримерРезультат
+дополнение2 + 35
-вычитание5 - 23
*продукт4 * 312
/истинное разделение10 / 42.5
//целое деление10 // 42
%по модулю (остаток)10 % 31
**власть2 ** 101024

Предупреждение: / всегда возвращает float, даже с двумя целыми числами (10 / 2 возвращает 5.0, а не 5). Для целочисленного деления используйте //.

Python
10 / 4    # 2.5
10 // 4   # 2
-7 // 2   # -4   (arrotonda verso il basso, non verso lo zero)

Числовые встроенные модули

Python
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

Python
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.

Python
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 стандартной библиотеки.

Попробуйте это

Упражнение#python.m4.l3.e1
Попыток: 0Загрузка…

Учитывая `секунды = 3725`, вычислите `часы`, `минуты`, `оставшиеся_секунды`, используя // и %. Оцените кортеж `(часы, минуты, оставшиеся_секунды)`.

Загрузка редактора…
Показать подсказку

// выполняет целочисленное деление, % остаток.

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#python.m4.l3.e2
Попыток: 0Загрузка…

Учитывая `radius = 5`, вычислите площадь круга в `area`, используя math.pi. Оцените «площадь», округленную до 2 десятичных знаков с помощью round.

Загрузка редактора…
Показать подсказку

math.pi * радиус ** 2

Решение доступно после 3 попыток

Дополнительная задача

Упражнение#python.m4.l3.e3
Попыток: 0Загрузка…

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 попыток