Есть ли в стандартной библиотеке python метод вычисления процентов ?
Или в подключаемом модуле.
Нужно сделать такую функцию, чтобы с введенной юзером цифры отнималось 10%, и выдавалась конечная цифра без этих 10%.
Max
2,3126 золотых знаков20 серебряных знаков34 бронзовых знака
задан 25 авг 2013 в 10:17
3
Для начала выясните, что Вы хотите получить.
Пользователь вводит 100%, а Вы хотите увидеть 90%? Тогда это X/100*90 = X * 0.9
Пользователь вводит 110%, а Вы хотите увидеть 100%? Тогда это X/110*100
Если идти от того, что на калькуляторах происходит:
“438 – 10%” по факту означает “438 минус 10% от 438”
Будет так: 438 – (438 / 100 * 10) = 438 – 0.1 * 438 = 438 – 43.8 = 394.2
ответ дан 25 авг 2013 в 10:28
SoftaSofta
5994 серебряных знака8 бронзовых знаков
1
x = float(input('Введите цифры : '))
y = 0.1
z = x - (x * y)
print(round(z,2))
Функцию ’round’, ее значения можете поменять для какой точности вам нужно.
insolor
45.7k15 золотых знаков54 серебряных знака95 бронзовых знаков
ответ дан 9 авг 2021 в 16:59
1
Как вывести процент в питоне?
Как вывести процент в питоне например я пишу мини программу в котором пользователе пишут цену продукта, а компьютер должен добавить 15 процентов налога на стоимость товара
-
Вопрос заданболее двух лет назад
-
2548 просмотров
Пригласить эксперта
Как пример:
TAX = 0.15
base_price = float(input('Enter the price without tax: '))
final_price = base_price + base_price * TAX
print(f'Price with tax: { final_price }')
?/100*115
Получаем 15 процентов к товару
-
Показать ещё
Загружается…
16 мая 2023, в 03:44
5000 руб./за проект
16 мая 2023, в 01:43
2000 руб./за проект
16 мая 2023, в 00:11
300 руб./за проект
Минуточку внимания
0 / 0 / 0 Регистрация: 28.05.2022 Сообщений: 6 |
|
1 |
|
Вычислить процент28.05.2022, 10:09. Показов 5589. Ответов 12
Написать функцию, которая возвращает процент от числа.
0 |
Catstail Модератор 35197 / 19413 / 4063 Регистрация: 12.02.2012 Сообщений: 32,427 Записей в блоге: 13 |
||||
28.05.2022, 12:26 |
2 |
|||
0 |
Рыжий Лис Просто Лис 4944 / 3252 / 1008 Регистрация: 17.05.2012 Сообщений: 9,522 Записей в блоге: 9 |
||||
28.05.2022, 14:57 |
3 |
|||
0 |
isaak 163 / 96 / 25 Регистрация: 17.10.2010 Сообщений: 1,069 |
||||
28.05.2022, 23:01 |
4 |
|||
Почему программа не работает???? В чем ошибка????
0 |
5886 / 3344 / 1033 Регистрация: 03.11.2009 Сообщений: 9,973 |
|
28.05.2022, 23:28 |
5 |
Потому что Вы написали шляпу, выньте свои инпуты вовне функции, а потом передавайте полученные в них значения в функцию.
0 |
isaak 163 / 96 / 25 Регистрация: 17.10.2010 Сообщений: 1,069 |
||||
28.05.2022, 23:29 |
6 |
|||
Правильней так:
0 |
5886 / 3344 / 1033 Регистрация: 03.11.2009 Сообщений: 9,973 |
|
28.05.2022, 23:30 |
7 |
По заданию из первого сообщения так – неправильно. Нужно было написать функцию.
0 |
isaak 163 / 96 / 25 Регистрация: 17.10.2010 Сообщений: 1,069 |
||||
28.05.2022, 23:35 |
8 |
|||
Разницы ни какой не видно, в обоих случаях программа выдает верный результат:
0 |
5886 / 3344 / 1033 Регистрация: 03.11.2009 Сообщений: 9,973 |
|
28.05.2022, 23:37 |
9 |
Разницы ни какой не видно, в обоих случаях программа выдает верный результат Разницы никакой и нет, код один и тот же, просто в одном случае он отвечает требованиям задания, а в другом – нет.
0 |
11413 / 6514 / 1349 Регистрация: 06.09.2009 Сообщений: 24,636 |
|
29.05.2022, 00:15 |
10 |
isaak, правила нормального программирования предусматривают сначала объявление вспомогательных функций, а уже потом писать основную программу с вводом необходимых данных.
1 |
163 / 96 / 25 Регистрация: 17.10.2010 Сообщений: 1,069 |
|
29.05.2022, 00:18 |
11 |
thyrex, ну как тогда по вашему правильно?
0 |
thyrex 11413 / 6514 / 1349 Регистрация: 06.09.2009 Сообщений: 24,636 |
||||
29.05.2022, 00:33 |
12 |
|||
1 |
Рыжий Лис Просто Лис 4944 / 3252 / 1008 Регистрация: 17.05.2012 Сообщений: 9,522 Записей в блоге: 9 |
||||
29.05.2022, 05:07 |
13 |
|||
1 |
Ответ Брайана (пользовательская функция) – это правильная и простая в использовании вещь.
Но если вы действительно хотели определить числовой тип с (нестандартным) оператором “%”, например, с помощью калькуляторов стола, так что “X% Y” означает X * Y/100.0, а затем с Python 2.6 и далее вы может переопределить оператор mod():
import numbers
class MyNumberClasswithPct(numbers.Real):
def __mod__(self,other):
"""Override the builtin % to give X * Y / 100.0 """
return (self * other)/ 100.0
# Gotta define the other 21 numeric methods...
def __mul__(self,other):
return self * other # ... which should invoke other.__rmul__(self)
#...
Это может быть опасно, если вы когда-либо использовали оператор “%” в смеси MyNumberClasswithPct с обычными целыми числами или плаваниями.
Что также утомительно в этом коде, вам также нужно определить все 21 другие методы Integral или Real, чтобы избежать следующего раздражающего и непонятного TypeError при его создании
("Can't instantiate abstract class MyNumberClasswithPct with abstract methods __abs__, __add__, __div__, __eq__, __float__, __floordiv__, __le__, __lt__, __mul__, __neg__, __pos__, __pow__, __radd__, __rdiv__, __rfloordiv__, __rmod__, __rmul__, __rpow__, __rtruediv__, __truediv__, __trunc__")
Автор оригинала: Andrea Ridolfi.
В этой статье рассматриваются расчет процентов. Проценты являются статистическими показателями, которые используются для описания специфических порций образца популяции. Следующие разделы объяснят, какие проценты являются, для чего они используются и как их рассчитать, используя Python. Как вы увидите, Python позволяет решить эту проблему несколькими способами, либо путем определения функции вручную или эксплуатации Numpy Отказ
Что такое проценты?
Проценты являются статистическими показателями, которые часто используются для определения определенной части образца населения. Точнее, мы используем процентиль, чтобы указать значение (рассматриваемое переменной) ниже, в котором конкретный процент выборочного населения падает. Например, если мы рассмотрим распределение высоты всех английских людей, живущих в Великобритании; говоря, что значение высоты 180 см Определяет 65 TH процентиль, это означает, что 65% всех английских людей, живущих в Великобритании, короче 180 см Отказ Как вы можете себе представить, процентиль обычно используются во многих статистических исследованиях, а также при отчетности о результатах опросов или измерений на большие группы населения.
Как рассчитать процентили?
Предположим, чтобы собрать высоту N люди; Чтобы оценить проценты, упомянутые к этому распределению, первый шаг – сортировать все значения в порядке возрастания. На данный момент предположим, что нас просят рассчитать 75 TH процентиль распределения; Мы рассчитаем так называемое ранг K/100 Отказ В этом случае k/100.75. Отказ Теперь мы должны умножить ранг для общего количества образцов в распределении (n, в этом случае 58); Отсюда мы получаем k x.75 x.5 Отказ Поскольку результат не является целым числом, мы приблизили значение ближайшего целого числа (44 в этом случае). Следующий шаг состоит в том, чтобы найти значение высоты, соответствующую на 44 TH положение в раздаче образца; Это значение соответствует 75 TH процентиль. В случае результата k x n это целое число, мы продолжаем дальше, непосредственно находя соответствующую стоимость в распределении образца; Это уже наш процентиль.
Теперь, когда мы знаем, какие проценты и как их можно рассчитать, мы увидим, как Python Делает эту задачу очень легко и быстро. В первой части мы решим проблему, определяя функцию, которая выполняет все шаги, показанные в предыдущем разделе, в то время как во второй части мы будем использовать Numpy Встроенная функция .percentile. () Отказ
Импорт соответствующих библиотек
Мы начинаем наш скрипт, импортируя библиотеки, которые будут использоваться на протяжении всего примера.
Нам нужно импортировать
-
Математика
для того, чтобы быть в состоянии круглая плавающие числа до ближайшего целого числа, - Numpy Для функции
.percentile. ()
, и - Матплотлиб Для окончательной части, в которой мы будем построить значения процентилей на распределение.
import numpy as np import math import matplotlib.pyplot as plt
Написание функции Python для расчета процентов
В этом первом разделе мы увидим, как создать функцию для расчета процентов. Целью этого раздела является чисто дидактикой, как вы увидите позже, Python Предлагает встроенные библиотеки, которые решают задачу автоматически. Тем не менее, всегда важно понимать, как проблема решена, и как работает определенная функция Python.
def my_percentile(data, percentile): n = len(data) p = n * percentile / 100 if p.is_integer(): return sorted(data)[int(p)] else: return sorted(data)[int(math.ceil(p)) - 1]
Мы начинаем, позвонив на нашу функцию my_percentile
, он потребуется в качестве входных параметров. Распределение образца и процентиль, который мы хотим рассчитать. Как описано выше, первый шаг – оценить размер нашего распределения (N); Затем мы вычисляем продукт «P» размера выборки и ранга Отказ
На данный момент мы должны создавать экземпляр Если заявление , чтобы отделить дело, в котором k x n это целое число от случая, в котором нет. Мы используем Python Метод .is_integer ()
оценить ли P
это целое число; Этот метод возвращает Правда
в положительном случае.
Если p.is_integer ()
Возвращает Правда
Мы должны искать P-TH Значения в нашем распределении (отсортировано в порядке возрастания). Чтобы сортировать распределение в порядке возрастания, мы использовали функцию отсортировано () и пропустите в качестве входного параметра самого распределения. Важно помнить, чтобы преобразовать P от поплавка (поскольку это происходит от математической операции, выполненной в предыдущей строке) к целому числу; В противном случае вы получите ошибку, в котором говорится, что значение индекса списка должно быть целым числом.
Мы заключаем, поднимая остальное заявление который охватывает случай, когда значение P
не целое число; В этом случае, используя функцию .ceil. ()
(из Math
Библиотека) , Мы приблизительно стоимость P
до ближайшего более высокого целого числа.
Затем мы преобразуем это число на целое число и вычитайте 1, чтобы соответствовать индексации, используемую в списках. Следующие строки кода вы можете найти все шаги, объясненные до сих пор, в этом разделе.
Вычисление процентов с использованием нашей функции
Чтобы проверить, хорошо ли работает наша функция, мы сначала должны определить распределение значений; Для этого мы можем использовать Numpy функция .RANDOM.RANDN ()
, который рисует случайные значения из обычного распределения, нам просто нужно пройти в качестве входного параметра размером массива. Мы выбираем создание массива 10000 значений.
dist = np.random.randn(10000)
Давайте теперь попробуем рассчитать значения 5 TH С 25 TH , 50 TH 75 TH и 95 TH Проценты. Мы можем построить список, называемый « Perc_func
», который содержит все эти проценты, оцениваемые через нашу функцию. Прежде чем делать это, мы определяем Список называется « index
», который содержит значения процентов, которые нас интересуют. После этого мы эксплуатируем Понимание списка , чтобы вызвать функцию my_percentile ()
Для каждого процентиля, определенного в списке « index
».
index = [5, 25, 50, 75, 95] perc_func = [my_percentile(dist, i) for i in index]
На данный момент список « Perc_func
» должен содержать значения, соответствующие всем процентам, перечисленным в списке « index
».
Вычисление процентов с использованием Numpy.Percentle ()
Теперь, когда мы знаем, как рассчитать процентили распределения, мы также можем эксплуатировать Numpy Встроенная функция, чтобы сделать это быстрее и эффективно.
.percentile ()
Функция принимает в качестве входных параметров. Распределение образца и процентиль, который мы заинтересованы в. Это также позволяет нам решить, какой метод следует использовать в случае, если продукт n x k не целое число; Действительно, есть не просто один правильный способ сделать это, ранее мы решили приблизиться к ценности до ближайшего целого числа; Однако мы также могли бы выбрать приблизиться к этому максимум более высоким/нижним целым числом или принимать среднее значение между нижним и более высоким целееми целых чисел.
Все эти параметры могут быть выбраны, выбирая среди этих ключевых слов для опции « Интерполяция
» [«Линейный», «ниже», «выше», «средняя точка», «ближайший»].
Вы можете найти полную документацию на Отказ
процентиль () функция здесь Отказ
Различные варианты могут привести к слегка разным результатам, мы выбираем опцию « Ближайший
», чтобы соответствовать методу, используемому в функции « my_percentile
». Аналогичным образом, к тому, что мы сделали в предыдущем разделе, мы создаем список под названием « Perc_numpy
», в котором мы храним значения 5 господство 25 TH , 50 TH 75 TH и 95 TH Проценты, оцениваются с использованием Numpy Отказ Следующие строки кода описывают только что объясненные процедуры.
# Using numpy for calculating percentiles perc_numpy = [np.percentile(dist, i, interpolation='nearest') for i in index]
Теперь мы можем распечатать два списка и проверять, являются ли полученные результаты равны.
print(perc_func) print(perc_numpy)
Построение процентилей на распределении
В начале статьи мы определили, какие процентили представляют собой.
Поскольку статистические определения могут быть довольно сложными для понимания, мы можем отобразить наше распределение значений и посмотреть, где рассчитанные проценты расположены в распределении.
Сделать это, мы эксплуатируем Matplotlib. и функция .axaxvline. ()
, который позволяет построить вертикальные линии на участке. Мы размещаем функцию AXVLINE ()
в для петли Чтобы создать вертикальную линию для каждого процентиля, содержащегося в списке « perc_func
». Чтобы лучше выделить процентильные линии, мы используем красный цвет.
# Plotting plt.hist(dist, 50) for i in range(len(index)): plt.axvline(perc_func[i], color='r') plt.show()
Окончательный результат отображается в Рисунок 1 ; Как видите, 50 TH Процент расположен прямо в середине распределения, а 95 TH Процент – это последняя строка и соответствует значению, ниже которого мы можем найти 95% населения образца.
Рисунок 1: Представление нормального распределения, используемого в примере, с вертикальными красными линиями, соответствующими (слева направо) до 5 господство 25 TH , 50 TH 75 TH и 95 TH Проценты.
Выводы
В этой статье мы узнали о Проценты То, что они представляют, и как их можно использовать для описания части распределения образца. Из их статистического определения мы разработали функцию Python для расчета проценты распределения образца.
После этого мы исследовали Numpy Функция .percentile ()
который позволяет вычислять процентили распределения образца в супер-быстрой и эффективном способе.
Затем мы сравнили результаты двух методов и проверили, что они были идентичны.
В конце концов, мы также показали графически проценты, которые мы ранее рассчитали на распределение образца, чтобы лучше понять их фактическое значение.