Вычисление процентов в питоне

Есть ли оператор для расчета процентов в Python?

Недавно я узнал, что знак «%» используется для вычисления остатка целого числа в Python. Однако мне не удалось определить, есть ли другой оператор или метод для вычисления процентов в Python. Подобно «/», который даст вам коэффициент, если вы просто используете float для одного из целых чисел, он фактически даст вам ответ, как традиционное разделение. Итак, какой-либо метод для процентного?

Чтобы было понятно, вы имеете в виду x * y / 100.0 или (x/y) * 100.0 ? Большинство из нас читает это как умножение; Брайан прочитал это как разделение.

4 ответа

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

Я бы добавил, что даже в математике соотношение гораздо полезнее, чем процент. Процент — это просто способ представить соотношение, с которым знакомо больше людей.

@nim6us: nim6us: если все, что вам нужно, это напечатать процент, тогда форматирование строки Python имеет такую директиву: «<:.1%>«.format(0.1234) -> ‘12.3%’ .

Вы можете просто разделить ваши два числа и умножить на 100. Обратите внимание, что это вызовет ошибку, если «целое» равно 0, так как спрашивать, какой процент от 0 числа не имеет смысла:

def percentage(part, whole): return 100 * float(part)/float(whole) 

Или, если вопрос, на который вы хотели ответить, был «что составляет 5% от 20», а не «какой процент составляет 5 из 20» (другая интерпретация вопроса, вызванная Ответ Карла Смита), вы должны написать:

def percentage(percent, whole): return (percent * whole) / 100.0 

Возможно, вы захотите добавить, если целое равно 0 и возвращает 0, так как в противном случае это вызовет исключение. Я просто столкнулся с этим, поэтому я и дам вам знать!

Читайте также:  Определить английский язык php

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

@CarlSmith Если вы заметили, между нашими двумя ответами есть функциональные различия, которые вы можете увидеть, если попробуете их оба: percentage(5, 20) (моя версия) дает вам 1.0 , так как 5% от 20 — 1, а percent(5, 20) (ваша версия) дает вам 0.0 , что неверно, так как вы используете разделение по этажам.

Хорошо, не волнуйтесь. Я только что заметил, что ваши изменения сделали мой ответ излишним, но не удаляемым. Я удалил свои оригинальные комментарии здесь и ниже, чтобы привести в порядок немного. Если вы хотите сделать то же самое?

Ответ Брайана (пользовательская функция) — это правильная и простая в использовании вещь.

Но если вы действительно хотели определить числовой тип с (нестандартным) оператором «%», например, с помощью калькуляторов стола, так что «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__") 

Это действительно продвинутый материал, который, хотя и не является хорошей идеей в данном случае, показывает истинную силу типов Python!

Причины, почему я люблю питона, ЭТО. Кроме того, возможно ли не переопределить все абстрактные методы, выполнив некоторую магию с клонированием класса существующего типа int , установив операторы __mod__ и __mul__ , а затем назначив его равным MyNumberClasswithPct?

Как и так ?: gist.github.com/thorsummoner/135c6a3c9b02b63c2e79 Первоначально я расширял оба числа. Real и int, но я понял, что мне просто нужно расширить float.

@ThorSummoner да, но я специально унаследовал от абстрактных чисел базового класса. Реал вместо float , для безопасности. Попробуйте другие операторы на вашем объекте Percent и посмотрите, нет ли противоречий? Может быть, с использованием numbers.Real было слишком много паранойи.

Я думаю, что проблема была решена. во всяком случае, я думал об этом решении

def percent(string="500*22%"): if "%" == string[-1] and "*" in string: getnum = string[:-1] ops = getnum.split("*") result = int(ops[0]) * int(ops[1]) / 100 print("The <>% of <> is <>".format(ops[1], ops[0], result)) return result else: print("The argument must be a string like '500*22%'") percent("1200*30%") 

Ещё вопросы

  • 1 Диалоговое окно оповещения в Android
  • 0 Возможно ли получить ссылку на массив от референта его элемента?
  • 0 «СОДЕРЖИТ» не работает в критериях просмотра
  • 1 Отправка электронного письма с приложением из приложения
  • 0 Переключение функций по нажатию кнопки
  • 0 Вставьте верхние / нижние колонтитулы страницы при печати документа HTML
  • 1 Не могу получать уведомления от FCM, пока приложение находится в состоянии переднего плана
  • 1 Проблема задержки в нескольких графиках, SVG или HTML5 Canvas?
  • 1 Обработка файловых операций с сопрограммами
  • 0 Удалить делегат события из измененного элемента
  • 0 Создание пакета установщика Windows
  • 0 Настройка функции углового фильтра
  • 1 java.net.ProtocolException: метод не поддерживает тело запроса: GET
  • 1 Минимизируйте данные, которые будут сериализованы для веб-сервисов Spring, отображающих данные JSON
  • 1 React-Native добавляет var в тег просмотра
  • 1 Приложение возвращается к неправильной активности после выхода из намерения камеры
  • 1 Автобокс Концепции SCJP
  • 0 PHP time () для Date / Time, возвращающих странные результаты
  • 1 ModuleNotFoundError: нет модуля с именем ‘Quartz’
  • 1 Python: OpenCV findHomography входы
  • 0 Способ загрузить все необходимые зависимости kde, чтобы начать работать над программированием kde?
  • 0 Как получить доступ к области действия ng-repeat из другой директивы того же элемента, на котором включен ng-repeat?
  • 0 Сменить модель триггера на переключателе?
  • 0 Разрешить регулярное выражение с обратной косой чертой
  • 1 Совпадение внутри строки, но игнорирование совпадений в скобках — Regex и JavaScript
  • 0 JQuery заменяет часть текста в

    на

  • 1 Почему моя ошибка не возвращается в моем экспресс-ответе?
  • 0 Вставить элемент в 2D вектор C ++
  • 0 Угловая функция запускается при нажатии, но не при инициализации в контроллере
  • 1 Как справиться с игровым потоком?
  • 0 Оставить MySQL запрос в той же таблице
  • 1 Заменить существующие R блестящие данные htmlwidget новыми данными
  • 0 Заказать автоматически внутреннее соединение
  • 1 Цикл декремента Python работает медленнее, чем цикл инкремента?
  • 0 Определение правил стиля для списка навигации (css)
  • 0 Ошибка счетчика текстовых символов при загрузке страницы
  • 0 Qt указывает местоположение для определенных данных приложения
  • 0 Если уникальный элемент нажал / Если нажал за пределами div (включая другой уникальный элемент)
  • 1 Как поставить задержку для функции в JavaScript? [Дубликат]
  • 1 Обновить формат нескольких ячеек с помощью запроса API updateCells
  • 1 Поток данных Apache Beam / GCP: чтение видео / файлов изображений
  • 0 Ключ API Google MAP в приложении Angular
  • 1 Google Map запрашивает местоположение в порядке, но не центрирует карту
  • 0 HTML5 и PHP: Воспроизведение видеофайла в формате base64
  • 1 Узел JS Как отправить изображение вместе с запросом данных на другой сервер / API
  • 1 Проблема с запуском файла класса java, содержащего зависимость Jsoup
  • 1 Не удается установить подпакет пространства имен Python в зависимости от другого подпакета
  • 0 C ++ Char Array, удаляющий повторяющиеся символы
  • 0 Console.log (‘variable’) — как показать
  • 0 Mysql Ошибка подключения к базе данных

Источник

How to Calculate a Percentage in Python

To get a percentage of two numbers in Python, divide them using the division operator ( / ) then multiply the result by 100 using the Python multiplication operator ( * ).

To demonstrate this, let’s get the percentage of 3 out of 9 using Python.

percent = 3 / 9 * 100 print(percent) 

Python Percentage Function

If you need to get percentages many times in your program, it may be worth creating a small helper function.

def getPercent(first, second, integer = False): percent = first / second * 100 if integer: return int(percent) return percent print(getPercent(3, 9)) 

With the above function, to get an integer back pass True as the third argument.

def getPercent(first, second, integer = False): percent = first / second * 100 if integer: return int(percent) return percent print(getPercent(3, 9, True)) 

Источник

How to Calculate a Percentage in Python

To get a percentage of two numbers in Python, divide them using the division operator ( / ) then multiply the result by 100 using the Python multiplication operator ( * ).

To demonstrate this, let’s get the percentage of 3 out of 9 using Python.

percent = 3 / 9 * 100 print(percent) 

Python Percentage Function

If you need to get percentages many times in your program, it may be worth creating a small helper function.

def getPercent(first, second, integer = False): percent = first / second * 100 if integer: return int(percent) return percent print(getPercent(3, 9)) 

With the above function, to get an integer back pass True as the third argument.

def getPercent(first, second, integer = False): percent = first / second * 100 if integer: return int(percent) return percent print(getPercent(3, 9, True)) 

Источник

Оцените статью