Числа и математические функции в Python
В этой статье вы узнаете о числах и различных математических функциях, которые доступны в Python.
Говоря о числах, мы пройдемся по наиболее часто используемым математическим операторам, которые нужны для выполнения простых арифметических операций с числами в Python. А в разделе «Математические функции» познакомимся с функциями, которые будут очень полезны при вычислении сложных математических выражений: возведение в степень, синус/косинус, факториалы и т. д. Приступим.
Перед прочтением статьи рекомендуем открыть IDLE. По ходу чтения копируйте примеры и прогоняйте их через компилятор, чтобы на практике понять, как работает тот или иной оператор или функция.
Числа
Python есть 6 основных «математических» операторов:
- сложение;
- вычитание;
- умножение;
- деление;
- возведение в степень.
- остаток от деления (mod);
- целочисленное деление (div).
Большинство из вас должно быть знакомо со всеми вышеперечисленными операторами, кроме оператора взятия остатка от деления и целочисленного деления. Не волнуйтесь, мы поговорим об этом. Начнем с начала.
Сложение
Несложно догадаться, что делает этот оператор: он просто складывает числа. Чтобы проверить, как это работает, просто перейдите в IDLE и введите число, затем знак сложения + (плюс), а затем еще одно число, которое нужно добавить к первому числу. Нажмите Enter. Это должно выглядеть так, как показано ниже.
Пример: сложим 8 и 19.
>>> 8+19
27
После нажатия клавиши Enter чуть ниже строки кода появится ответ. Вывод так и будет отображаться каждый раз — чуть ниже кода. Нажимаете Enter — получаете результат.
Не останавливайтесь на этом примере, попробуйте использовать оператор сложения с другими числами. Например, попробуйте сложить числа с плавающей точкой: 4.5 + 5.5
и т. д.
У вычитания такой же синтаксис, как и у сложения. Просто измените оператор на знак вычитания -
(минус). Так же выберите случайные числа и попробуйте вычесть одно из другого.
Пример: вычтем из 89.33 число 23.67. Ответ 65.55.
Умножение
Опять то же самое! Просто измените оператор на *
(звездочку). Вы ведь знаете, что он используется для умножения, верно? Попробуйте использовать оператор в IDLE.
Пример: возьмите любые два числа и умножьте их с помощью оператора умножения, как показано ниже.
Деление
На этот раз нам понадобится знак /
(слэш). Попробуйте использовать оператор со случайными числами.
Если вы новичок, то можете столкнуться с некоторыми трудностями. Какими? Сейчас узнаем. Для начала возьмем целые числа (числа без десятичной дроби), например 16 и 2, и разделим одно на другое.
>>> 16/2
8
Возведение в степень
Этого математического оператора обычно в языках программирования нет. Честно говоря, языков со встроенным возведением в степень, кроме Python, и не припомнить. В других языках для возведения в степень используют другие операторы. В Python же для этого достаточно поставить между двумя числами **
(две звездочки). Правое число возведется в степень, равную левому числу. Например, чтобы найти 10 степень числа 2, нужно написать:
>>> 2**10
1024
Теперь мы знаем обо всех часто используемых математических операторах Python. Попробуйте объединить несколько операторов и использовать их в одном выражении. Например, введите ((2**5)*10)/3
. Python должен вывести 106.66666666666667
.
Взятие остатка от деления
Оператор взятия остатка от деления в Python обозначается % (знак процента). Если вам знакомы другие языки программирования, скорее всего, вы знаете, что такое взятие остатка от деления. В других языках этот оператор часто называют mod. Если вы с ним еще не знакомы, ничего страшного.
Вы ведь знаете оператор деления, так? Тогда вы знаете, каков будет остаток от этого деления, верно? Этот оператор как раз и возвращает этот остаток в качестве ответа. Целая часть как бы откидывается. Вот несколько примеров.
12%2 = 0
, так как 12 полностью делится на 2.13%2 = 1
, так как остаток от деления 13 на 2 равен 1.19%5 = 4
, так как, опять же, остаток от деления 19 на 5 равен 4.
В IDLE все так же:
Целочисленное деление
Этот оператор в Python обозначается знаком // (двумя слэшами), в других языках его называют div. Оператор откидывает остаток и оставляет только целую часть. Вот как это работает:
13//2 = 6
, так как 13/2 = 6.519//5 = 3
, так как 19/5 = 3.8
Попробуйте использовать целочисленное деление со случайными числами в своей IDLE.
Математические функции
Когда вы узнаете о Python побольше, возможно, вам захочется создать «научный калькулятор» в качестве проекта. Для этого кроме простых математических операций вам придется реализовать математические функций: тригонометрические, логарифмические и так далее. Но даже если мы забудем о создании продвинутого калькулятора, в жизни программиста достаточно ситуаций, когда вам могут понадобиться эти функции.
Например, если вы создаете ПО для инженеров-строителей — им математические функции нужны для расчета различных параметров в конструкции, которую они строят. Или, например, аэрокосмическое ПО для расчетов траектории спутника и так далее. Короче говоря, сложные математические функции используются в совершенно различных реальных программах, так что знать о них нужно.
В Python хорошие ребята уже написали код практически для всех математических функций и добавили их в библиотеки. Так что вам вручную писать функции не придется, вы можете без зазрения совести использовать готовые решения.
Подробнее о функциях в Python мы поговорим в другой статье. Здесь мы лишь немного коснемся этого вопроса.
Функция — это фрагмент кода, который принимает (или не принимает) в качестве входных данных некоторые значения, обрабатывает их, а затем возвращает (или не возвращает) некое значение в качестве выходных данных.
Как вы можете увидеть на рисунке выше, на вход функции подается x
, а на выходе функция f
выводит значение f(x)
. В целом, функции не обязательно принимать что-то на вход или выводить что-то. Но для математической функции важно и то, и другое. Например, чтобы вычислить sin(x)
обязательно нужно значение x
.
В Python есть два типа функций.
- Встроенные функции — это функции, для которых не требуется никаких сторонних файлов кода (они же модули или библиотеки). Они — часть Python и генерируются в компиляторе Python, поэтому ничего импортировать для их использования не нужно.
- Пользовательские функции требуют внешних файлов, их называют модулями. Использование этих внешних файлов в вашем коде называется импортом. Все, что вам нужно сделать, чтобы использовать функции из библиотека, это импортировать их в ваш код.
Пришло время протестировать математические функции. Начнем со степенных функций!
Возведение в степень — pow(x, y)
Я знаю, о чем вы думаете. Мы же только что возводили числа в степень, так? Так. Но тогда мы возводили число в степень при помощи оператора, а это — встроенная функция. Это альтернативный способ возведения в степень.
Поскольку это встроенная функция, импортировать никаких библиотек не нужно. На вход функция pow(x, y)
принимает два числа — основание и показатель степени.
Откройте IDLE и напишите:
>>> pow(3, 2)
Теперь проанализируем, что мы написали и что сделает Python. Сначала мы ввели pow
— это просто имя функции, которую мы пытаемся вызвать. Это укажет компилятору Python найти встроенную функцию с именем pow
и определить, что она может делать. Далее в скобках мы написали два числа через запятую: 3 и 2. Первое число — 3 — основание, а второе — 2 — показатель степень. Иначе говоря, мы пытаемся возвести 3 во вторую степень.
Как только компилятор Python убедится, что синтаксис верен, он начнет искать реализацию функции pow и выведет ответ: 9.
Теперь вы знаете, как вызывать функции. В случае с математическими функциями в общем виде это выглядит следующим образом:
>>> имя_функции(аргумент1, необязательный_аргумент2, необязательный_аргумент3, ...)
Значения в скобках, разделенные запятыми, называются аргументами. В функции pow(x, y)
в примере выше аргументами являлись 3 и 2. В функции может быть любое количество аргументов. У математических функций, как правило, есть как минимум один аргумент. Давайте рассмотрим другие встроенные математические функции.
Модуль — abs(x)
Функция модуля возвращает неотрицательное значение аргумента. Иначе говоря, она не меняет неотрицательные значения, а отрицательные значения делает положительными.
Пример: модуль -3 равен 3, модуль -8.74 равен 8.74 и так далее.
Синтаксис
>>> abs(-99.99)
Так как -99.99 — отрицательное число, выводом будет положительное число — 99.99.
Теперь давайте попробуем некоторые функции, для использования которых нужно импортировать библиотеку.
Синус — sin(x)
Синус — тригонометрическая функция, она принимает только одно значение в качестве аргумента — x
. Аргумент должен быть выражен в радианах, не путайте со степенью. Как мы уже сказали, эту функцию не получится использовать напрямую. Если вы попытаетесь вызвать функцию sin(x), получите сообщение об ошибке.
Дело в том, что компилятор не знает, что ему делать, когда он встречает функцию sin()
, поскольку мы ее не определили. Чтобы использовать ее, придется импортировать математический модуль Python, в котором в том числе есть уже реализованная функция sin()
, которая поможет компилятору понять, что делать, когда он встречает эту функцию.
То, что мы сейчас сделаем, называется импортом модуля. Для этого потребуется написать такую строку:
>>> import math
Жмем Enter, и готово! Теперь, чтобы использовать функцию sin(), перейдите в новую строку и введите:
>>> math.sin(3.14159)
Поскольку 3.14159 это приблизительно π
, ответ будет близок к нулю.
Как вы можете видеть, ответ такой — 2.653589335273e-6
. Он может показаться немного пугающим, но на самом деле, это всего лишь значит следующее: 2.653589335273 × 10^-6
, что равно 0.000002653589335273
. Действительно близко к нулю.
В математическом модуле есть еще ряд полезных математических функций: floor()
, exp()
, log()
, sqrt()
и многие другие. Их полный список и количество аргументов, которые они принимают на вход, можно найти на официальном сайте Python в разделе Mathematical Functions.