В предыдущих уроках мы познакомились с числами в Python — целыми (int) и с плавающей точкой (float). Мы научились выполнять базовые арифметические операции: сложение, вычитание, умножение, деление. Однако возможности Python для работы с числами гораздо шире. Язык предоставляет мощные встроенные функции и специализированные модули для выполнения математических операций, генерации случайных чисел и точных вычислений с десятичными дробями. Представьте, что вам нужно рассчитать площадь круга по радиусу — понадобится число π (пи). Или сгенерировать случайный пароль для пользователя — нужен генератор случайных символов. Или рассчитать проценты по банковскому вкладу с точностью до копейки — обычные числа с плавающей точкой могут дать неточный результат из-за особенностей их представления в памяти компьютера. В этом уроке мы научимся решать все эти задачи с помощью стандартных модулей Python.
Мы начнем с встроенных функций для работы с числами. Функция abs() возвращает абсолютное значение числа (модуль), что полезно при работе с разностями и расстояниями. round() позволяет округлить число до нужного количества знаков после запятой — незаменимая функция для работы с деньгами и отображения результатов. pow() возводит число в степень и, в отличие от оператора **, поддерживает вычисление по модулю, что важно для криптографии. sum(), min() и max() работают с последовательностями чисел, позволяя быстро найти сумму, минимальное и максимальное значение. Функция divmod() возвращает одновременно частное и остаток от деления, что удобно при переводе секунд в часы и минуты или при работе с валютой.
Затем мы погрузимся в модуль math — библиотеку математических функций, которая является стандартом де-факто для любых научных и инженерных расчетов на Python. Вы узнаете о математических константах: math.pi (число π, 3.14159...), math.e (основание натурального логарифма, 2.71828...), math.tau (2π), а также о специальных значениях math.inf (бесконечность) и math.nan (не число). Изучим функции округления: math.ceil() всегда округляет вверх (потолок), math.floor() — вниз (пол), math.trunc() — отбрасывает дробную часть (в сторону нуля). Разберем степенные и логарифмические функции: math.sqrt() для квадратного корня, math.pow() для возведения в степень, math.exp() для экспоненты, math.log() для натурального логарифма, math.log10() и math.log2() для десятичного и двоичного логарифмов. Изучим тригонометрические функции: math.sin(), math.cos(), math.tan() и их обратные версии, которые работают с радианами. Познакомимся с комбинаторными функциями: math.factorial() для вычисления факториала, math.comb() для числа сочетаний (n choose k), math.perm() для числа размещений. Также рассмотрим math.gcd() для нахождения наибольшего общего делителя и math.isclose() для безопасного сравнения чисел с плавающей точкой с учетом погрешности.
Модуль random позволит вам генерировать случайные числа для различных задач: игр, симуляций, тестирования, криптографии. random.random() генерирует дробное число от 0 до 1 (не включая 1). random.randint(a, b) возвращает случайное целое число в диапазоне от a до b включительно — идеально для симуляции броска кубика или выбора случайного индекса. random.uniform(a, b) возвращает случайное дробное число в заданном диапазоне. Для работы с последовательностями используйте random.choice() для выбора случайного элемента, random.choices() для выбора нескольких элементов с возможностью повторений, random.shuffle() для перемешивания списка на месте, random.sample() для случайной выборки уникальных элементов без повторений. Вы также узнаете о функции random.seed(), которая позволяет сделать случайные числа воспроизводимыми — это важно для отладки и тестирования.
Модуль decimal решает проблему точности вычислений с десятичными дробями. Вы узнаете, почему 0.1 + 0.2 в Python дает 0.30000000000000004, а не 0.3. Это связано с тем, что числа с плавающей точкой хранятся в двоичной системе, и не все десятичные дроби могут быть точно представлены. Для финансовых и бухгалтерских расчетов такая погрешность недопустима. Модуль decimal позволяет выполнять вычисления с десятичными числами с заданной точностью, точно так, как мы привыкли считать вручную. Вы научитесь создавать Decimal-объекты из строк (важно! — не из float), устанавливать глобальную точность вычислений с помощью getcontext().prec, выполнять арифметические операции и округлять результаты с помощью quantize().
Особое внимание уделим форматированию чисел в f-строках. Вы узнаете, как вывести число с фиксированным количеством знаков после запятой ({value:.2f}), как добавить разделители тысяч для больших чисел ({value:,}), как представить число в процентах ({value:.2%}), как использовать экспоненциальную запись ({value:.2e}), а также как управлять выравниванием чисел в колонках ({value:>10.2f}, {value:<10.2f}, {value:^10.2f}). Эти навыки необходимы для создания красивых отчетов и вывода данных в понятном виде.
Все примеры будут максимально практичными: расчет площади круга с использованием math.pi, генерация случайных паролей с помощью random.choice, симуляция бросков кубика, финансовые расчеты процентов по вкладу с использованием decimal, округление цен для печати чека, статистический анализ данных с sum, min, max. К концу урока вы будете уверенно использовать все числовые возможности Python для решения реальных задач.