Округление в python

Когда использовать Decimal и Fraction?

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

  • Обмен валют. Особенно если этот процесс подразумевает не просто конвертацию евро в рубли, тенге или иную валюту, а выполнение более сложных операций.
  • Масштабируемые расчеты. К примеру, на фабрике начинают готовить печенье по бабушкиному рецепту, в котором упоминается «1/3 столовой ложки» определенного ингредиента. Сколько именно литров или миллилитров составит эта треть, если применять ее не к одной порции печенья, а к промышленным масштабам? А сколько это составит в пересчете на «неродную» систему мер, то есть фунтов или унций?
  • Работа с иррациональными числами. Если вы планируете запускать спутник или возводить энергетическую станцию, точность расчетов необходимо задать еще до того, как вы приступите к самым первым вычислениям. И оповестить об этом всех, кто имеет хоть какое-то отношение к проекту.

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

Модуль Decimal незаменим, если нужно считать деньги: с его помощью вы сможете подсчитать точную сумму, вплоть до копеек.

Fraction считает просто и честно: любители онлайн-игр приспособили его для подсчетов в игровой математике.

# Round down to the next integer: Python’s math.floor() function

The function returns the floor value of its argument, which is the nearest integer less than or equal to that argument’s value (Python Docs, n.d. b).

That sounds abstract, but is just another way of saying that rounds down to the next whole number. So becomes and is turned into . And since the function rounds down to a smaller value, becomes .

Here’s a quick example of the function:

only accepts one argument: the value to round down. With a small custom function we can also round down to a number of decimal places. See round down to a specific decimal amount for more.

Example: round values down to the next full integer

To explore how the function works in practice, let’s examine the following Python program:

We first import the module. That makes it possible to use the function. Then we make five variables, through . Each holds a floating-point value.

Next we round those values down. For that we call the function on each variable. We store the outcome in new variables ( through ).

The program’s third part outputs the variables with Python’s function. Here each statement displays the original value and its rounded down version. Here’s how that looks:

READ MORE

Round down to a certain number of decimal places with math.floor()

# Round values up and down: Python’s round() function

To round floating-point values up and down we use Python’s function (Lutz, 2013; Python Docs, n.d. a). There are two ways to use this function. The first option is to round values to a certain number of decimals. The other option turns a floating-point value into a whole number.

To do that latter, we call with one argument: the value to turn into an integer. For example:

The function rounds values of towards an even integer (Python Docs, n.d. a). So is round up for positive values and round down for negative values.

For instance, both and return , while gives and gives . This Python behaviour is a bit different from how rounding usually goes.

When we give an integer, the function simply returns that whole number. There’s no error in that case, and so we don’t have to check if the function’s argument has a fractional value. It does need to be a number though; string values are not allowed in .

Example: round Python numbers to the nearest full integer

To see how the function works in practice, let’s consider the following mini-program:

Here we first make five variables with floating-point values. Some have a lot of decimal places and others just a few.

Then we do some rounding. For that we call the function and provide one argument: the value to round. We store the rounded integers in the variables through .

Next we output the results with the function. For each variable we display the original value (e.g., ) and its rounded result (). With the string method we justify that first value to the left. That aligns the values for a prettier output.

Here’s how the rounded values look:

FURTHER READING

Round to a number of decimal places with round()

Функция экспоненты exp() в Python

Библиотека Math в Python поставляется с функцией , которую можно использовать для вычисления значения . К примеру, — экспонента от . Значение равно .

Метод может быть использован со следующим синтаксисом:

Python

math.exp(x)

1 math.exp(x)

Параметр может быть положительным или отрицательным числом. Если не число, метод возвращает ошибку. Рассмотрим пример использования данного метода:

Python

import math

# Инициализация значений
an_int = 6
a_neg_int = -8
a_float = 2.00

# Передача значений методу exp() и вывод
print(math.exp(an_int))
print(math.exp(a_neg_int))
print(math.exp(a_float))

1
2
3
4
5
6
7
8
9
10
11

importmath

 
# Инициализация значений

an_int=6

a_neg_int=-8

a_float=2.00

 
# Передача значений методу exp() и вывод

print(math.exp(an_int))

print(math.exp(a_neg_int))

print(math.exp(a_float))

Вывод

Shell

403.4287934927351
0.00033546262790251185
7.38905609893065

1
2
3

403.4287934927351
0.00033546262790251185
7.38905609893065

Мы объявили три переменные и присвоили им значения с различными числовыми типами данных. Мы передали значения методу для вычисления их экспоненты.

Мы также можем применить данный метод для встроенных констант, что продемонстрировано ниже:

Python

import math

print(math.exp(math.e))
print(math.exp(math.pi))

1
2
3
4

importmath

print(math.exp(math.e))

print(math.exp(math.pi))

Вывод

Shell

15.154262241479262
23.140692632779267

1
2

15.154262241479262
23.140692632779267

При передаче не числового значения методу будет сгенерирована , как показано далее:

Python

import math

print(math.exp(«20»))

1
2
3

importmath

print(math.exp(«20»))

Вывод

Shell

Traceback (most recent call last):
File «C:/Users/admin/mathe.py», line 3, in <module>
print (math.exp(«20»))
TypeError: a float is required

1
2
3
4

Traceback(most recent call last)

File»C:/Users/admin/mathe.py»,line3,in<module>

print(math.exp(«20»))

TypeErrorafloatisrequired

Как видно из примера выше, генерируется ошибка .

# Round up to the next integer: Python’s math.ceil() function

The function returns the ceiling of its argument, which is the nearest integer greater than or equal to that argument’s value (Python Docs, n.d. b).

That’s just a way of saying that rounds up to a whole number: becomes and gets turned into . And because the function rounds up to a greater value, becomes .

Here’s a quick example of :

Here’s a way to remember the difference between and . As you know, each floating-point value lies between two consecutive integers. , for instance, is between and .

Now the “ceiling” is the higher endpoint of this interval. So returns . The lower start point of that integer interval is called the “floor”. So returns 12.

Python’s function always rounds up to a full integer. But with a small custom function we can also round up to a number of decimal places. See round Python values to decimal places for how.

Example: round Python values up to whole numbers

Let’s see how works in practice. This example program rounds several floating-point values up to a whole number:

We first import the module. That makes the function available. Then we make five different variables, named through . Each has a number with several decimal places.

The next part rounds those values up to a full integer. To make that happen we call the function on each variable. We put the values returns by that function in new variables, through .

The third code segment has the function output both the original and rounded value. Here’s what that displays:

READ MORE

Round up to a certain number of decimal places with math.ceil()

«Петя любит Дашу».replace(/Дашу|Машу|Сашу/, «Катю») ¶

Не трудно догадаться, что результатом работы js-выражения выше будет текст . Даже, если Петя неровно дышит к Маше или Саше, то результат всё равно не изменится.

Рассмотрим базовые спец. символы, которые можно использовать в шаблонах:

Символ Описание Пример использования Результат
\ Символ экранирования или начала мета-символа /путь\/к\/папке/ Надёт текст
^ Признак начала строки /^Дом/ Найдёт все строки, которые начинаются на
$ Признак конца строки /родной$/ Найдёт все строки, которые заканчиваются на
. Точка означает любой символ, кроме перевода строки /Петя ..бит Машу/ Найдёт как , так и
| Означает ИЛИ /Вася|Петя/ Найдёт как Васю, так и Петю
? Означает НОЛЬ или ОДИН раз /Вжу?х/ Найдёт и
* Означает НОЛЬ или МНОГО раз /Вжу*х/ Найдёт , , , и т.д.
+ Означает ОДИН или МНОГО раз /Вжу+х/ Найдёт , , и т.д.

Помимо базовых спец. символов есть мета-символы (или мета-последовательности), которые заменяют группы символов:

Символ Описание Пример использования Результат
\w Буква, цифра или _ (подчёркивание) /^\w+$/ Соответствует целому слову без пробелов, например
\W НЕ буква, цифра или _ (подчёркивание) /\W\w+\W/ Найдёт полное слово, которое обрамлено любыми символами, например
\d Любая цифра /^\d+$/ Соответствует целому числу без знака, например
\D Любой символ НЕ цифра /^\D+$/ Соответствует любому выражению, где нет цифр, например
\s Пробел или табуляция (кроме перевода строки) /\s+/ Найдёт последовательность пробелов от одного и до бесконечности
\S Любой символ, кроме пробела или табуляции /\s+\S/ Найдёт последовательность пробелов, после которой есть хотя бы один другой символ
\b Граница слова /\bдом\b/ Найдёт только отдельные слова , но проигнорирует
\B НЕ граница слова /\Bдом\b/ Найдёт только окночние слов, которые заканчиваются на
\R Любой перевод строки (Unix, Mac, Windows) /.*\R/ Найдёт строки, которые заканчиваются переводом строки

Нужно отметить, что спец. символы \w, \W, \b и \B не работают по умолчанию с юникодом (включая кириллицу). Для их правильной работы нужно указывать модификатор . К сожалению, на окончание 2019 года JavaScript не поддерживает регулярные выражения для юникода даже с модификатором, поэтому в js эти мета-символы работают только для латиницы.

Ещё регулярные выражения поддерживают разные виды скобочек:

Выражение Описание Пример использования Результат
(…) Круглые скобки означают под-шаблон, который идёт в результат поиска /(Петя|Вася|Саша) любит Машу/ Найдёт всю строку и запишет воздыхателя Маши в результат поиска под номером 1
(?:…) Круглые скобки с вопросом и двоеточием означают под-шаблон, который НЕ идёт в результат поиска /(?:Петя|Вася|Саша) любит Машу/ Найдёт только полную строку, воздыхатель останется инкогнито
(?P<name>…) Задаёт имя под-шаблона /(?P<воздыхатель>Петя|Вася|Саша) любит Машу/ Найдёт полную строку, а воздыхателя запишет в результат под индексом 1 и ‘воздыхатель’
Квадратные скобки задают ЛЮБОЙ СИМВОЛ из последовательности (включая спец. символы \w, \d, \s и т.д.) /^+$/ Соответствует любому выражению , но не
Если внутри квадратных скобок указать минус, то это считается диапазоном /+/ Аналог /\w/ui для JavaScript
Если минус является первым или последним символом диапазона, то это просто минус /+/ Найдёт любое целое числое с плюсом или минусом (причём не обязательно, чтобы минус или плюс были спереди)
Квадратные скобки с «крышечекой» означают любой символ НЕ входящий в диапазон //i Найдёт любой символ, который не является буквой, числом или пробелом
] Квадратные скобки в квадратных скобках задают класс символов (alnum, alpha, ascii, digit, print, space, punct и другие) /]+/ Найдёт последовательность непечатаемых символов
{n} Фигурные скобки с одним числом задают точное количество символов /\w+н{2}\w+/u Найдёт слово, в котором две буквы н
{n,k} Фигурные скобки с двумя числами задают количество символов от n до k /\w+н{1,2}\w+/u Найдёт слово, в котором есть одна или две буквы н
{n,} Фигурные скобки с одним числом и запятой задают количество символов от n до бесконечности /\w+н{3,}\w+/u Найдёт слово, в котором н встречается от трёх и более раз подряд

range() и enumerate()

Вы уже наверняка запомнили, что работает с последовательностями. В программировании очень часто приходится повторять какую-то операцию фиксированное количество раз. А где упоминается «количество чего-то», существует и последовательность, числовая.

Для того чтобы выполнить какую-либо инструкцию строго определенное число раз, воспользуемся функцией

можно представлять, как функцию, что возвращает последовательность чисел, регулируемую количеством переданных в неё аргументов. Их может быть 1, 2 или 3:

  • ;
  • ;
  • .

Здесь – это первый элемент последовательности (включительно), – последний (не включительно), а – разность между следующим и предыдущим членами последовательности.

Чрезвычайно полезная функция определена на множестве итерируемых объектов и служит для создания кортежей на основании каждого из элементов объекта. Кортежи строятся по принципу (индекс элемента, элемент), что бывает крайне удобно, когда помимо самих элементов требуется ещё и их индекс.

Random Number Functions

Random numbers are used for games, simulations, testing, security, and privacy applications. Python includes the following functions that are commonly used.

Sr.No. Function & Description
1 choice(seq)

A random item from a list, tuple, or string.

2 randrange ( stop )

A randomly selected element from range(start, stop, step).

3 random()

A random float r, such that 0 is less than or equal to r and r is less than 1

4 seed()

Sets the integer starting value used in generating random numbers. Call this function before calling any other random module function. Returns None.

5 shuffle(lst)

Randomizes the items of a list in place. Returns None.

6 uniform(x, y)

A random float r, such that x is less than or equal to r and r is less than y.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector