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.

While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com that has taught exponential skills to millions of coders worldwide. He’s the author of the best-selling programming books Python One-Liners (NoStarch 2020), The Art of Clean Code (NoStarch 2022), and The Book of Dash (NoStarch 2022). Chris also coauthored the Coffee Break Python series of self-published books. He’s a computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.