To print a percentage value in Python, use the str.format()
method or an f-string on the format language pattern "{:.0%}"
. For example, the f-string f"{your_number:.0%}"
will convert variable your_number
to a percentage string with 0 digits precision.
Simply run those three basic statements in your shell:
your_number = 0.42
percentage = "{:.0%}".format(your_number)
print(percentage)
As a more Pythonic alternative to step number 2, you can use f-strings such as in percentage = f"{your_number:.0%}"
for Python version 3.6 and above.
Here’s the minimal 3-step code example to convert a numeric value to a string that is formatted as a percentage value:
# 1. Create a float or integer number: your_number = 0.42 # 2. Convert the number to a string value: percentage = "{:.0%}".format(your_number) # alternative for Python 3.6+: percentage = f"{your_number:.0%}" # 3. Print the result print(percentage)
The resulting output is:
42%
What does the format string "{:.0%}"
mean?
:%
– The colon symbol followed by the percentage symbol means “convert it to a percentage number”..0
– The dot symbol followed by the zero means “use zero digits after the decimal number”.
If you want to include more digits and accomplish a higher precision, use a larger number after the dot such as in "{:.2%}"
for two digits or "{:.2%}"
for thirteen digits.
print("{:.0%}".format(2/3)) # 67% print("{:.2%}".format(2/3)) # 66.67% print("{:.13%}".format(2/3)) # 66.6666666666667%
? Instead of using the str.format()
function, you can also use f-strings for Python 3.6 and newer versions. For example, f"{x:.0%}"
would convert the numeric value stored in variable x
to a percentage number without a decimal digit.
Here are the same three examples as in the previous code snippet—but using f-strings instead:
x = 2/3 print(f"{x:.0%}") # 67% print(f"{x:.2%}") # 66.67% print(f"{x:.13%}") # 66.6666666666667%
This is even more concise and it is the most Pythonic version for Python 3.6 and above. You can learn everything about the differences of f-strings and the more traditional str.format()
here.
Lazy Non-Format Alternative
If you’re a bit lazy about f-strings and you always have to look up the syntax, you can simply use the round()
built-in method on the fractional number normalized to the 1-100 percentage range. Then, convert the result to a string and use string concatenation to append a suffix '%'
symbol.
These three steps will do the trick:
x = 2/3
percentage = str(round(x*100)) + '%'
print(percentage)
Here’s the code:
x = 2/3 percentage = str(round(x*100)) + '%' print(percentage) # 67%
Thanks for reading through this whole article! π
If you want to boost your Python skills on autopilot, check out the market-leading free Finxter Email Academy with hundreds of Python lessons sent directly into your INBOX:
Programmer Humor
Q: How do you tell an introverted computer scientist from an extroverted computer scientist?
A: An extroverted computer scientist looks at your shoes when he talks to you.