Работа с числовыми данными: функции и инструменты Python

Раздел: Стандартная библиотека Python -> Математические функции

Работа с числами: встроенные функции и модуль math

Для преобразования, округления и математических операций с числами в Python применяются как встроенные функции, так и функции модуля math. В этом разделе рассматриваются наиболее эффективные подходы, альтернативные варианты, типичные ошибки и способы их устранения.

Как получить точное округление числа с плавающей точкой?

Рекомендуемое решение: функция round() с указанием количества знаков после запятой.

number = 3.14159
rounded = round(number, 2)
print(rounded)  # 3.14

Python округление числа (округление числа в python)

Функция round() использует банковское округление (округление до ближайшего чётного). Для большинства финансовых задач это приемлемо, но для строгих требований следует применять decimal.Decimal.

Проблема: Округление чисел вида 2.675 не всегда даёт 2.68 из-за особенностей двоичного представления.

Решение: Использовать Decimal с заданным контекстом округления.

from decimal import Decimal, ROUND_HALF_UP
value = Decimal('2.675')
rounded = value.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
print(rounded)  # 2.68

Python корень числа (вычисление квадратного корня числа в python)

Как преобразовать строку в число и обработать ошибки?

Используются функции int() и float() с обработкой исключений.

user_input = "123.45"
try:
    number = float(user_input)
    print(number)
except ValueError:
    print("Невозможно преобразовать строку в число")

Python 3 степень числа (возведение числа в третью степень в python)

Типичная ошибка: Пустая строка или нечисловые символы вызывают ValueError.

Способ решения: Проверять строку через str.isdigit() (только для целых) или регулярные выражения.

Как вычислить модуль числа?

Для целых и вещественных чисел применяется встроенная функция abs().

print(abs(-7))    # 7
print(abs(-3.5))  # 3.5

Python sqrt (функция sqrt)

Вариант из модуля math:

import math
print(math.fabs(-3.5))  # 3.5

функции чисел python (функции для работы с числами в python)

Разница: abs() возвращает целое число для целых, а math.fabs() всегда возвращает float.

Как получить сумму элементов и произведение?

sum() - встроенная функция для суммирования итерируемых объектов. Для произведения используется math.prod() (Python 3.8+).

numbers = [1, 2, 3, 4]
print(sum(numbers))  # 10

import math
print(math.prod(numbers))  # 24

Без math.prod() можно применить цикл или functools.reduce.

Ошибка: Передача пустого списка в sum() даёт 0, а math.prod() - 1 (нейтральные элементы).

Как проверить, является ли число целым?

Метод float.is_integer() для вещественных чисел.

print((3.0).is_integer())  # True
print((3.5).is_integer())  # False

Для целочисленных объектов проверка не требуется - они всегда целые. Альтернатива: сравнение с округлением math.floor(x) == x.

Как получить целое частное и остаток?

Встроенная функция divmod() возвращает пару (частное, остаток).

q, r = divmod(17, 5)
print(q)  # 3
print(r)  # 2

Эквивалентно q = a // b и r = a % b. Для вещественных чисел divmod() тоже работает.

Как возвести число в степень или извлечь корень?

Возведение в степень: оператор ** или функция pow(). Для корня часто используют math.sqrt() или возведение в степень 0.5.

import math
print(2 ** 10)  # 1024
print(pow(2, 10))  # 1024
print(math.sqrt(25))  # 5.0
print(25 ** 0.5)  # 5.0

Трёхаргументный pow(a, b, mod) эффективнее для модульной экспоненты.

Расширенные примеры работы с числами

Округление вверх и вниз (ceil, floor)

Пример
import math

number = 3.7
print(math.ceil(number))   # 4
print(math.floor(number))  # 3
print(math.trunc(number))  # 3 (отбрасывание дробной части)
4
3
3

Факториал числа

Пример
import math

print(math.factorial(5))  # 120
print(math.factorial(0))  # 1
120
1

Примечание:

math.factorial() работает только для неотрицательных целых чисел. Для больших чисел (n > 170) может возникнуть переполнение памяти.

Наибольший общий делитель (gcd)

Пример
import math

print(math.gcd(48, 18))  # 6
print(math.gcd(0, 12))   # 12
print(math.gcd(7, 13))   # 1
6
12
1

Наименьшее и наибольшее число (min, max)

Пример
numbers = [5, 3, 9, 1]
print(min(numbers))  # 1
print(max(numbers))  # 9

# С ключом
strings = ['яблоко', 'груша', 'ананас']
print(max(strings, key=len))  # 'яблоко' (длина 6)
1
9
яблоко

Преобразование числа в двоичную, восьмеричную и шестнадцатеричную системы

Пример
number = 42
print(bin(number))   # 0b101010
print(oct(number))   # 0o52
print(hex(number))   # 0x2a

# Обратное преобразование
print(int('101010', 2))  # 42
print(int('52', 8))      # 42
print(int('2a', 16))     # 42
0b101010
0o52
0x2a
42
42
42

Логарифмы и экспонента

Пример
import math

print(math.log(100, 10))    # 2.0 (логарифм по основанию 10)
print(math.log(100))        # 4.605170185988092 (натуральный логарифм)
print(math.log2(256))       # 8.0
print(math.log10(1000))     # 3.0
print(math.exp(1))          # 2.718281828459045
2.0
4.605170185988092
8.0
3.0
2.718281828459045

Тригонометрические функции

Пример
import math

angle = math.pi / 4  # 45 градусов
print(math.sin(angle))   # 0.7071067811865476
print(math.cos(angle))   # 0.7071067811865476
print(math.tan(angle))   # 1.0

# Обратные функции
print(math.asin(0.7071067811865476))  # 0.7853981633974483 (π/4)

# Гиперболические
print(math.sinh(1))  # 1.1752011936438014
0.7071067811865476
0.7071067811865476
1.0
0.7853981633974483
1.1752011936438014

Работа с комплексными числами

Пример
c = 3 + 4j
print(abs(c))        # 5.0 (модуль)
print(c.real)        # 3.0
print(c.imag)        # 4.0
print(c.conjugate()) # (3-4j)

# Модуль cmath для комплексных функций
import cmath
print(cmath.phase(c))  # 0.9272952180016122 (фаза в радианах)
5.0
3.0
4.0
(3-4j)
0.9272952180016122

Случайные числа из модуля random

Пример
import random

# Случайное целое от 1 до 10
print(random.randint(1, 10))

# Случайное вещественное от 0 до 1
print(random.random())

# Выбор случайного элемента из списка
items = ['a', 'b', 'c']
print(random.choice(items))

# Перемешивание списка
random.shuffle(items)
print(items)
(пример вывода)
7
0.3745401188473625
b
['c', 'a', 'b']

Функции для работы с числами в Python - comments

En
функции чисел python (python)