How do I print a '%' sign using string formatting?
Question:
I’ve made a little script to calculator percent; however, I wish to actually include the %
within the message printed…
Tried this at the start – didn’t work…
oFile.write("Percentage: %s%"n" % percent)
I then tried "Percentage: %s"%"n" % percent"
which didn’t work.
I’d like the output to be:
Percentage: x%
I keep getting
TypeError: not all arguments converted during string formatting
Answers:
To print the %
sign you need to ‘escape’ it with another %
sign:
percent = 12
print "Percentage: %s %%n" % percent # Note the double % sign
>>> Percentage: 12 %
EDIT
Nowadays in python3 a better (and more readable) approach is to use f-strings. Note that other solutions (shown below) do work as well:
$python3
>>> percent = 12
>>> print(f'Percentage: {percent}%') # f-string
Percentage: 12%
>>> print('Percentage: {0}%'.format(percent)) # str format method
Percentage: 12%
>>> print('Percentage: %s%%' % percent) # older format, we 'escape' the '%' character
Percentage: 12%
Or use format()
function, which is more elegant.
percent = 12
print "Percentage: {}%".format(percent)
4 years later edit
Now In Python3x print()
requires parenthesis.
percent = 12
print ("Percentage: {}%".format(percent))
format()
is more elegant but the modulo sign seems to be quicker!
http://inre.dundeemt.com/2016-01-13/string-modulo-vs-format-fight/ – shows that modulo is ~30% faster!
x = 0.25
y = -0.25
print("nOriginal Number: ", x)
print("Formatted Number with percentage: "+"{:.2%}".format(x));
print("Original Number: ", y)
print("Formatted Number with percentage: "+"{:.2%}".format(y));
print()
Sample Output:
Original Number: 0.25
Formatted Number with percentage: 25.00%
Original Number: -0.25
Formatted Number with percentage: -25.00%
Helps in proper formatting of percentage value
+++
Using ascii value of percentage – which is 37
print( '12' + str(chr(37)) )
print("Interest Rate (APR): " , format(APR, '.0f'),'%')
I’ve made a little script to calculator percent; however, I wish to actually include the %
within the message printed…
Tried this at the start – didn’t work…
oFile.write("Percentage: %s%"n" % percent)
I then tried "Percentage: %s"%"n" % percent"
which didn’t work.
I’d like the output to be:
Percentage: x%
I keep getting
TypeError: not all arguments converted during string formatting
To print the %
sign you need to ‘escape’ it with another %
sign:
percent = 12
print "Percentage: %s %%n" % percent # Note the double % sign
>>> Percentage: 12 %
EDIT
Nowadays in python3 a better (and more readable) approach is to use f-strings. Note that other solutions (shown below) do work as well:
$python3
>>> percent = 12
>>> print(f'Percentage: {percent}%') # f-string
Percentage: 12%
>>> print('Percentage: {0}%'.format(percent)) # str format method
Percentage: 12%
>>> print('Percentage: %s%%' % percent) # older format, we 'escape' the '%' character
Percentage: 12%
Or use format()
function, which is more elegant.
percent = 12
print "Percentage: {}%".format(percent)
4 years later edit
Now In Python3x print()
requires parenthesis.
percent = 12
print ("Percentage: {}%".format(percent))
format()
is more elegant but the modulo sign seems to be quicker!
http://inre.dundeemt.com/2016-01-13/string-modulo-vs-format-fight/ – shows that modulo is ~30% faster!
x = 0.25
y = -0.25
print("nOriginal Number: ", x)
print("Formatted Number with percentage: "+"{:.2%}".format(x));
print("Original Number: ", y)
print("Formatted Number with percentage: "+"{:.2%}".format(y));
print()
Sample Output:
Original Number: 0.25
Formatted Number with percentage: 25.00%
Original Number: -0.25
Formatted Number with percentage: -25.00%
Helps in proper formatting of percentage value
+++
Using ascii value of percentage – which is 37
print( '12' + str(chr(37)) )
print("Interest Rate (APR): " , format(APR, '.0f'),'%')