Поиск по сайту:

Встроенные функции Python 3 для работы с числами


Введение

Python 3 поставляется со многими встроенными функциями, которые вы можете легко использовать в любой программе, над которой работаете. Некоторые функции позволяют вам преобразовать строки.

В этом руководстве мы рассмотрим несколько встроенных функций, которые можно использовать с числовыми типами данных в Python 3. Мы рассмотрим следующие функции:

  • abs() для абсолютного значения
  • divmod() для одновременного нахождения частного и остатка
  • pow() для возведения числа в определенную степень
  • round() для округления числа до определенного десятичного знака
  • sum() для вычисления суммы элементов в итерируемом типе данных

Знакомство с этими методами может дать вам больше гибкости при программировании, чтобы вы могли принимать обоснованные решения при выборе операторов и функций для использования. Мы рассмотрим некоторые из этих функций с примерами в этом руководстве.

Предпосылки

У вас должен быть установлен Python 3 и настроена среда программирования на вашем компьютере или сервере. Если у вас не настроена среда программирования, вы можете обратиться к руководствам по установке и настройке среды программирования на вашем сервере, подходящей для вашей операционной системы (Ubuntu, CentOS, Debian и т. д.).

Абсолютная величина

Встроенная функция abs() вернет абсолютное значение числа, которое вы ей передадите. В математике абсолютное значение относится к расстоянию, на котором число находится на числовой прямой от 0. Абсолютное значение не учитывает, в каком направлении от нуля лежит число, а это означает, что отрицательные числа будут представлены положительными числами.

Чтобы привести несколько примеров, абсолютное значение 15 равно 15, абсолютное значение -74 равно 74, а абсолютное значение 0 равно 0.

Абсолютное значение — важное понятие для расчетов и реального анализа, но оно также имеет смысл, когда мы думаем о повседневных ситуациях, таких как пройденное расстояние. Например, если мы пытаемся добраться куда-то, что находится на расстоянии 58 миль, но вместо этого проезжаем 93 мили, мы промахиваемся мимо нашего первоначального пункта назначения. Если мы сейчас захотим подсчитать, сколько миль осталось пройти, чтобы добраться до пункта назначения, мы получим отрицательное число, но мы не можем проехать отрицательные мили.

Давайте используем abs() для решения этой проблемы:

Информация: Чтобы следовать примеру кода в этом руководстве, откройте интерактивную оболочку Python в вашей локальной системе, выполнив команду python3. Затем вы можете копировать, вставлять или редактировать примеры, добавляя их после приглашения >>>.

miles_from_origin = 58	# Miles destination is from origin
miles_travelled = 93	# Miles travelled from origin to destination (too many)

# Calculate how many miles destination is from current location:
miles_to_go = miles_from_origin - miles_travelled	

print(miles_to_go)		# Print how many miles left (a negative number)
print(abs(miles_to_go))	# Use absolute value to account for negative number
Output
-35 35

В выводе мы видим, что если мы не используем функцию abs(), в данном случае у нас будет отрицательное число, -35. Хотя мы можем оказаться в ситуации, когда miles_travelled меньше, чем miles_from_origin, функция abs() учитывает возможность отрицательного числа. .

С отрицательным числом abs() вернет положительное число, поскольку абсолютные значения всегда являются положительными числами или равны нулю.

Давайте рассмотрим использование abs() с положительным числом и нулем:

print(abs(89.9))
print(abs(0))
Output
89.9 0

Скорее всего, мы будем использовать abs() с переменной, которая может быть положительной или отрицательной, в случае, когда мы ищем только положительное число. Чтобы учесть отрицательный ввод или результат, мы будем использовать abs(), чтобы изменить возвращаемое значение на положительное число.

Нахождение частного и остатка в одной функции

Поскольку как деление по полу (возвращающее частное), так и деление по модулю (возвращающее остаток) тесно связаны между собой, может быть полезно использовать функцию, объединяющую обе операции одновременно.

Встроенная функция Python divmod() объединяет эти две функции, возвращая сначала частное от деления на пол, а затем остаток.

Поскольку divmod() будет работать с двумя числами, нам нужно передать ему два числа.

divmod(a,b)

С помощью этой функции мы в основном выполняем следующее:

a // b
a & b

Допустим, мы написали книгу, состоящую из 80 000 слов. С нашим издателем у нас есть выбор между 300 или 250 словами на странице, и мы хотели бы получить представление о том, сколько страниц у нас будет в каждом случае. С помощью divmod() мы можем сразу увидеть, сколько страниц у нас будет и сколько слов будет перенесено на дополнительную страницу.

words = 80000		# How many words in our book
per_page_A = 300	# Option A, 300 words per page
per_page_B = 250	# Option B, 25- words per page

print(divmod(words,per_page_A))	# Calculate Option A
print(divmod(words,per_page_B))	# Calculate Option B
Output
(266, 200) (320, 0)

В варианте А у нас будет 266 страниц, заполненных словами, и останется 200 слов (⅔ страницы), всего 267 страниц, а в варианте Б у нас будет даже 320-страничная книга. Если мы хотим заботиться об окружающей среде, мы можем выбрать вариант А, но если мы хотим выглядеть более впечатляюще с книгой большего размера, мы можем выбрать вариант Б.

Поскольку функция divmod() может принимать как целые числа, так и числа с плавающей запятой, давайте также рассмотрим пример, в котором используются числа с плавающей запятой:

a = 985.5
b = 115.25

print(divmod(a,b))
Output
(8.0, 63.5)

В этом примере 8,0 — это минимальное значение 985,5, деленное на 115,25, а 63,5 — остаток.

Имейте в виду, что вы можете использовать оператор деления пола // и оператор деления по модулю %, чтобы проверить, что сделал divmod():

print(a//b)
print(a%b)
Output
8.0 63.5

При использовании функции divmod() в Python. мы получаем как целое количество раз, когда происходит деление, так и остаток.

Власть

В Python вы можете использовать оператор ** для возведения числа в степень или использовать встроенную функцию pow(), которая принимает два числа.

Чтобы увидеть, как работает функция pow(), предположим, что мы проводим исследование бактерий и хотим узнать, сколько бактерий у нас будет в конце дня, если мы начнем с 1. Бактерии, с которыми мы работаем, удваиваются каждый час, поэтому мы будем вычислять 2 (удвоение) в степени общего количества часов (24 в нашем случае).

hours = 24
total_bacteria = pow(2,hours)

print(total_bacteria)
Output
16777216

Мы передали два целых числа в функцию pow() и определили, что к концу этого 24-часового периода у нас будет более 16 миллионов бактерий.

В математике, если мы хотим вычислить 3 в степени 3, это обычно записывается так:

Вычисление, которое мы завершаем, равно 3 x 3 x 3, что равно 27.

Чтобы вычислить 3³ в Python, мы должны ввести pow(3,3).

Функция pow() принимает как целые числа, так и числа с плавающей запятой и предоставляет альтернативу использованию оператора **, когда вы хотите возвести числа в определенную степень.

Округление чисел

Возможность быстро и легко округлять числа становится важной при работе с числами с плавающей запятой, которые имеют много знаков после запятой. Встроенная функция Python round() принимает два числа, одно из которых нужно округлить, а другое указывает количество десятичных разрядов, которое нужно включить.

Мы будем использовать функцию для получения числа с более чем 10 знаками после запятой и использовать функцию round() для уменьшения количества знаков после запятой до 4:

i = 17.34989436516001
print(round(i,4))
Output
17.3499

В приведенном выше примере число с плавающей запятой 17.34989436516001 округляется до 17.3499, поскольку мы указали, что количество знаков после запятой должно быть ограничено 4.

Также обратите внимание, что функция round() округляет числа в большую сторону, поэтому вместо предоставления 17.3498 в качестве вывода она предоставила 17.3499, поскольку число, следующее за десятичное число 8 — это число 9. Любое число, за которым следует число 5 или больше, будет округлено до следующего целого числа.

Давайте разберем синтаксис для round():

round(number to round,number of decimal places)

В быту округление чисел происходит часто, особенно при работе с деньгами; мы не можем разделить ни копейки поровну между несколькими друзьями.

Давайте рассмотрим пример программы, которая может рассчитать чаевые. Здесь мы предоставим цифры, но мы могли бы переписать программу, чтобы вместо этого вводить числа, предоставленные пользователем. В этом примере 3 друга пошли в ресторан и хотят поровну разделить счет в размере 87,93 доллара США, а также добавить чаевые в размере 20%.

bill = 87.93				# Total bill
tip = 0.2					# 20% tip
split = 3					# Number of people splitting the bill

total = bill + (bill * tip)	# Calculate the total bill

each_pay = total / split	# Calculate what each person pays

print(each_pay)				# What each person pays before rounded

print(round(each_pay,2))	# Round the number — we can’t split pennies
Output
35.172000000000004 35.17

В этой программе мы сначала просим вывести число после того, как подсчитаем общий счет плюс чаевые, деленные на 3, что дает число с большим количеством знаков после запятой: 35.172000000000004. Поскольку это число не имеет смысла как денежная цифра, мы используем функцию round() и ограничиваем десятичные разряды до 2, чтобы мы могли обеспечить вывод, с которым 3 друга действительно могут работать. : 35.17.

Если вы предпочитаете округление до числа, в котором в качестве десятичного значения используется только 0, вы можете сделать это, используя 0 в качестве второго параметра в функции round():

round(345.9874590348545304636,0)

Это будет оцениваться как 346.0.

Вы также можете передавать целые числа в round() без получения ошибки, если вы получаете пользовательский ввод в форме целого числа, а не числа с плавающей запятой. Когда в качестве первого параметра передается целое число, будет возвращено целое число.

Вычисление суммы

Функция sum() используется для вычисления сумм числовых составных типов данных, включая словари.

Мы можем передать список функции sum(), чтобы добавить все элементы в список вместе в порядке слева направо:

some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]
print(sum(some_floats))
Output
49.5

Это будет работать аналогично с кортежами и словарями:

print(sum((8,16,64,512)))	# Calculate sum of numbers in tuple
print(sum({-10: 'x', -20: 'y', -30: 'z'}))	# Calculate sum of numbers in dictionary 
Output
600 # Sum of numbers in tuple -60 # Sum of numbers in dictionary

Функция sum() может принимать до 2 аргументов, поэтому вы можете добавить дополнительное число в виде целого числа или числа с плавающей запятой, чтобы прибавить к числам, составляющим аргумент в первой позиции:

some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]

print(sum(some_floats, 0.5))
print(sum({-10: 'x', -20: 'y', -30: 'z'},60))
Output
50.0 0

Если вы не включаете второй аргумент, функция sum() по умолчанию добавляет 0 к повторяемому составному типу данных.

Заключение

В этом руководстве были рассмотрены некоторые встроенные методы, которые можно использовать с числовыми типами данных в языке программирования Python.

Чтобы узнать больше о работе с числами, вы можете прочитать «Понимание списков в Python 3».