Как найти процент от числа в пайтоне

Есть ли в стандартной библиотеке python метод вычисления процентов ?
Или в подключаемом модуле.

Нужно сделать такую функцию, чтобы с введенной юзером цифры отнималось 10%, и выдавалась конечная цифра без этих 10%.

Max's user avatar

Max

2,3126 золотых знаков20 серебряных знаков34 бронзовых знака

задан 25 авг 2013 в 10:17

ror's user avatar

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

Nicolas Chabanovsky's user avatar

ответ дан 25 авг 2013 в 10:28

Softa's user avatar

SoftaSofta

5994 серебряных знака8 бронзовых знаков

1

x = float(input('Введите цифры : '))
y = 0.1
z = x - (x * y)
print(round(z,2))

Функцию ’round’, ее значения можете поменять для какой точности вам нужно.

insolor's user avatar

insolor

45.7k15 золотых знаков54 серебряных знака95 бронзовых знаков

ответ дан 9 авг 2021 в 16:59

Bogdan gusakov's user avatar

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

Модератор

Эксперт функциональных языков программированияЭксперт Python

35197 / 19413 / 4063

Регистрация: 12.02.2012

Сообщений: 32,427

Записей в блоге: 13

28.05.2022, 12:26

2

Python
1
2
def proc(a,p):
    return a*p/100



0



Рыжий Лис

Просто Лис

Эксперт Python

4944 / 3252 / 1008

Регистрация: 17.05.2012

Сообщений: 9,522

Записей в блоге: 9

28.05.2022, 14:57

3

Python
1
2
3
4
5
6
7
8
def get_proc(number: float, procent: float) -> float:
    """
    Возвращает процент от числа
    :param number: число
    :param procent: процент
    :return: процент от числа
    """
    return number * procent / 100.0



0



isaak

163 / 96 / 25

Регистрация: 17.10.2010

Сообщений: 1,069

28.05.2022, 23:01

4

Почему программа не работает???? В чем ошибка????

Python
1
2
3
4
def proc(a,p):
  a= float(input('Введите число: '))
  p= float(input('Введите число: '))
  print(a*p/100)



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

Правильней так:

Python
1
2
3
a= float(input('Введите число: '))
p= float(input('Введите число: '))
print(a*p/100)



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

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

Python
1
2
3
4
5
a= float(input('Введите число: '))
p= float(input('Введите число: '))
def proc(a,p):
    return a*p/100
print(proc(a,p))



0



Эксперт по компьютерным сетям

5886 / 3344 / 1033

Регистрация: 03.11.2009

Сообщений: 9,973

28.05.2022, 23:37

9

Цитата
Сообщение от isaak
Посмотреть сообщение

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

Разницы никакой и нет, код один и тот же, просто в одном случае он отвечает требованиям задания, а в другом – нет.



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

Python
1
2
3
4
5
6
def proc(a, p):
    return a*p/100
 
a = float(input('Введите число: '))
p = float(input('Введите процент: '))
print(proc(a, p))



1



Рыжий Лис

Просто Лис

Эксперт Python

4944 / 3252 / 1008

Регистрация: 17.05.2012

Сообщений: 9,522

Записей в блоге: 9

29.05.2022, 05:07

13

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def get_proc(number: float, procent: float) -> float:
    """
    Возвращает процент от числа
    :param number: число
    :param procent: процент
    :return: процент от числа
    """
    return number * procent / 100.0
 
 
def main():
    a = float(input('Введите число: '))
    p = float(input('Введите процент: '))
    print(get_proc(a, p))
 
 
if __name__ == '__main__':
    main()



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 () который позволяет вычислять процентили распределения образца в супер-быстрой и эффективном способе.

Затем мы сравнили результаты двух методов и проверили, что они были идентичны.

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

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