Python. функция работы с процентами
Есть ли в стандартной библиотеке python метод вычисления процентов ?
Или в подключаемом модуле.
Нужно сделать такую функцию, чтобы с введенной юзером цифры отнималось 10%, и выдавалась конечная цифра без этих 10%.
Для начала выясните, что Вы хотите получить.
Пользователь вводит 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
![]()
Функцию ’round’, ее значения можете поменять для какой точности вам нужно.
Есть ли в Python оператор для вычисления процентов?
Недавно я узнал, что знак «%» используется для вычисления остатка от целого числа в Python. Однако мне не удалось определить, есть ли в Python другой оператор или метод для вычисления процентов.
Как и в случае с «/», который дает вам частное, если вы просто используете число с плавающей запятой для одного из целых чисел, оно фактически даст вам ответ, как при традиционном делении. Так есть ли способ вычислить процент?
задан 13 мая ’11, 18:05

Чтобы было ясно, вы имеете в виду x * y / 100.0 or (x/y) * 100.0 ? Большинство из нас читают это как умножение; Брайан прочитал это как разделение. — smci
5 ответы
В Python такого оператора нет, но его легко реализовать самостоятельно. На практике в вычислениях проценты не так полезны, как по модулю, поэтому ни один язык, который я могу придумать, не реализует их.
ответ дан 13 мая ’11, 22:05
Благодарю за разъяснение! — ним6ус
Я бы добавил, что даже в математике соотношение гораздо полезнее, чем процент. Процент — это просто способ представить соотношение, с которым знакомо больше людей. — петля
@ nim6us: если все, что вам нужно, это вывести процент, тогда форматирование строки Python имеет такую директиву: «<:.1%>«.format(0.1234) -> ‘12.3%’ . — JFS
@jfs, это замечание настолько хорошее, что ИМО заслуживает отдельного ответа. — хрип
Почему этот ответ был принят? Ответ Брайана Кэмпбелла на самом деле дал некоторый код. — ТехРобо36414519
Вы можете просто разделить два числа и умножить их на 100. Обратите внимание, что это вызовет ошибку, если «целое» равно 0, поскольку вопрос о том, какой процент от 0 является числом, не имеет смысла:
Или, если вопрос, на который вы хотели бы получить ответ, был «сколько 5% от 20», а не «какой процент 5 из 20» (другая интерпретация вопроса, вдохновленная Карл Смит ответ), вы должны написать:
Спасибо, что предоставили мне альтернативный метод. — ним6ус
Вы можете добавить, если все равно 0, вернуть 0, поскольку в противном случае это вызовет исключение. Я только что столкнулся с этим, поэтому и сообщаю вам! — Энди Чейз
@CarlSmith Я не копировал твой ответ; вы заметите, что моя версия не идентична вашей. Вторая половина была вдохновлена вашей другой интерпретацией вопроса, так что вы правы, я должен был бы поверить в то, что вы вдохновили меня добавить альтернативную интерпретацию вопроса. — Брайан Кэмпбелл
@CarlSmith Если вы заметили, есть функциональные различия между нашими двумя ответами, которые вы можете увидеть, если попробуете их оба: percentage(5, 20) (моя версия) дает вам 1.0 , так как 5% от 20 равно 1, а percent(5, 20) (ваша версия) дает вам 0.0 , что неверно, поскольку вы используете разделение этажей. — Брайан Кэмпбелл
Вам не нужно 2 приведения, вы можете просто написать return 100.0 * part/whole . — Августин
использование%
Что-то простое
ответ дан 27 авг.

Ответ Брайана (настраиваемая функция) в целом является правильным и самым простым.
Но если ты на самом деле хотел определить числовой тип с помощью (нестандартного) оператора ‘%’, как это делают настольные калькуляторы, так что ‘X% Y’ означает X * Y / 100.0, а затем, начиная с Python 2.6, вы можете переопределить что собой представляет модуль() оператор:
Это может быть опасно, если вы когда-нибудь будете использовать оператор «%» в смеси MyNumberClasswithPct с обычными целыми числами или числами с плавающей запятой.
Что также утомительно в этом коде, так это то, что вам также необходимо определить все 21 другой метод Integral или Real, чтобы избежать следующей раздражающей и непонятной ошибки TypeError при его создании
ответ дан 11 мая ’17, 23:05
Здесь действительно продвинутый материал, который, хотя и не очень хорошая идея в данном случае, показывает истинную мощь типов Python! — Энди Чейз
Причины, по которым я люблю питона, ЭТО. Кроме того, возможно ли не переопределить все абстрактные методы, совершив некоторую магию с клонированием класс существующий int введите и установите __mod__ и __mul__ операторы, а затем присвоить ему MyNumberClasswithPct? — ТорСаммонер
Боги рассердятся, если я это сделаю — Питто
Вот так?: gist.github.com/thorsummoner/135c6a3c9b02b63c2e79 Изначально я расширял оба числа: Real и int, но я понял, что мне просто нужно расширить float. — ТорСаммонер
@ThorSummoner да, но я специально унаследовал от абстрактного базового класса числа. вместо float , для безопасности. Попробуйте другие операторы на вашем Percent возразить и посмотреть, нет ли противоречий? Может быть, используя numbers.Real было слишком много паранойи. — смки
Очень быстрая и удобная реализация кода с помощью лямбда оператор.
Percentage Sign in Python
In Python, the % sign is commonly used in three cases:
- Modulo calculation. For example, 5 % 3 returns 2 .
- Old-school string formatting. For example, «I am %d years old» % 25 returns «I am 25 years old» .
- “Magic” commands in IPython shell. For example, In [2]: %recall executes the previous command.
1. Modulo in Python
The most commonly known use case for % in Python is the modulo operator.
The modulo operator calculates the remainder of a division between two integers.
For example, dividing 10 to 3 evenly is impossible. There will be one leftover. To verify this using Python, write:
This can represent for example how many slices of pizza are left over when 10 slices are shared with 3 eaters.
Practical Modulo Example: Leap Years
Definition. A leap year is a year that is evenly divisible by 4 or 400. The exception is that years divisible by 100 are not leap years (unless they are divisible by 400). For example, 2016, 2000, 1600 are leap years but 2011 and 1900 are not.
Task. Write a program that checks if a given year is a leap year.
Answer. To solve this problem, you need to figure out if a given year is divisible by 4 but not by 100 unless it’s divisible by 400.
To turn this into code, you get this kind of result:
If this answer rings no bells, here is a complete guide on how to figure out leap years in Python.
2. Old-school String Formatting with % Operator
In earlier days, Python string formatting was possible using the % operator followed by a type identifier.
For instance, let’s add a string into another string using %s:
This is positional formatting. It works such that you specify a place for a variable in a string using the % operator. Immediately after that, you specify the type of variable you want to insert.
In the above example, you embed a string into another string with the format specifier %s.
- The percentage sign means a variable will be inserted in that position.
- The character ‘s’ shows the type of the inserted variable is string.
In addition to embedding strings into strings, you can embed other types too. To do this, you need to use different format specifiers.
For example, to embed a number into a string, use the %d format specifier:
Or if you want to convert an integer to a string that represents a hexadecimal number, you can use the %x format specifier:
However, this formatting style is yesterday’s news.
- In Python 2.6 and later, you can use .format() method to format strings.
- As of Python 3.6, you can use formatted strings (F-strings) to format strings in a more elegant way.
An example of the string.format() method in Python 2.6+:
A formatted string example in Python 3.6+:
3. Magic Commands in IPython Shell
Magic commands are command-line-like commands that are available in the IPython shell.
But What Is an IPython Shell?
If you are using Jupyter Notebook you definitely know what an IPython shell is.
If you do not know what an IPython shell is, it is an interactive Python shell. It has rich features such as syntax highlighting or code completion. IPython Notebooks (these days Jupyter Notebook) is a popular web-based interactive computational environment. In this environment, you can create, run, visualize and document the code all in the same interactive shell.
Magic Commands in IPython Shell
If you are using Jupyter Notebook, you have to know about magic commands.
For example, you can get the present working directory in the IPython shell using %pwd magic command:
This works the same way as the pwd command works in a command-line window.
In IPython, there are two types of magic commands:
- Line magics.
- Cell magics.
1. Line Magics in IPython
Line magic commands are similar to command-line commands. They start with a singular % character followed by the command without arguments or parenthesis.
These line magics can be used as expressions. Their result can be stored into a Python variable.
2. Cell Magics in IPython
Cell magics operate on multiple lines below the call as opposed to line magics. To call a cell magic command, use a two % operators, %%, followed by the command name.
A cell magic command can make modifications to the input. This input does not even have to be valid in Python. The whole block is received as a string by the cell magic command.
Available Magic Commands in IPython
To get a list of all the available line magics and cell magics, use the %lsmagic command.
How to Use Magic Commands
Listing out all the possible magic commands is useful. But even more useful is knowing how to actually use them. Luckily, you do not need to start googling the magic commands up. Instead, you can use a built-in magic command to get help with any magic commands in IPython:
- To get help on any line magic command, run %commandname?
- To get help with a cell magic command, run %%commandname?
For example, let’s see what the line magic %autocall does:
Or let’s take a look at what the cell magic command %%ruby does:
Conclusion
The percentage operator % is used in three ways in Python:
Name already in use
python-codes.-part-1 / «Банковские проценты» "Bank interest"
- Go to file T
- Go to line L
- Copy path
- Copy permalink
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters