Formatting numbers, precision, output¶
In [86]:
pi = 3.14159265358979323846264338
Na = 6.0221409e+26 # #/kmol
atm = 101.325 # kPa
kB = 1.3806485279E-23 # J/K
Rg = 8314 # J/kmol*K
Format 'em¶
- Use a formatted string
f"some text, value of var inserted here: {var}"- That is,
{var}inserts the value of variablevar - Can have multiple
{var}in a single string.
- Format the variable like this
{var:w.pt}- The format is after the
: wis the width the variable should take (optional).pis the precision (optional)tis the type (optional)efor scientific 6.02E23ffor floating point number 3.14dfor integer 101sfor string- etc.
- The format is after the
In [109]:
print( f"Na = {Na:20.7e} #/kmol" )
print( f"atm = {atm:20.3f} kPa" )
print( f"Rg = {Rg:20d} J/kmol*K" )
Na = 6.0221409e+26 #/kmol atm = 101.325 kPa Rg = 8314 J/kmol*K
Details¶
There are three main formatting methods.
- % formatting
- str.format()
- f-strings
Here, we'll use the newer f-string method.¶
Useful links:¶
- f-string introduction with a brief summary of the other methods.
- Overview of the three methods.
- The str.format() and f-string methods have a lot of similiarities.
- This link gives a good description of the str.format() method which is good for understanding.
- This site directly compares the older % formatting to the str.format() methods, and gives lots of good examples.
- Once you already know what is going on, this short site gives a pretty complete summary of format codes and options.
Introduction, examples¶
- Here, we focus on formatting numbers.
- Keep things simple, the above links give more details.
Crude printing¶
In [47]:
print( "The value of pi is", pi )
The value of pi is 3.141592653589793
f-strings¶
- This stands for formatted string.
- Write the string with a leading f
f"My string"
- Insert variables into the string using {varName}.
f"My string {varName}"- The
{varName}is replaced with the value of the variable.
In [48]:
print( f"The value of pi is {pi}" )
The value of pi is 3.141592653589793
In [49]:
print( f"kB={kB} and Na={Na}" )
kB=1.3806485279e-23 and Na=6.0221409e+26
In [50]:
p = f"k={kB} and Na={Na}"
print(p)
k=1.3806485279e-23 and Na=6.0221409e+26
Generic python expressions can go inside { }¶
In [51]:
print( f"pi^2 = {pi**2}" )
pi^2 = 9.869604401089358
Formating numbers¶
- Format as
{var:t}wheretis one ofeorEfor scientific, like 6.02E23ffor floating point, like 3.14dfor integers, like 101 (d is for decimal number, as opposed to, say, binary)gfor general number (python chooses),- (also,
sfor string). - other types available, see links above.
In [93]:
print( f"Rg = {Rg:d}" )
print( f"Rg = {Rg:f}" )
print( f"Rg = {Rg:e}" )
Rg = 8314 Rg = 8314.000000 Rg = 8.314000e+03
Precision¶
- Format as
{var:.5t}, where the.5means 5 decimal places.
In [64]:
print( f"pi = {pi:.5f}" )
print( f"pi = {pi:.5e}" )
pi = 3.14159 pi = 3.14159e+00
Width¶
- Specify a fixed width of a number.
{var:w.pt}wherewis the full width andpis the precision.
In [94]:
print( f"pi = {pi:20.5f}" )
print( f"Na = {Na:20.5e}" )
print( f"kB = {kB:20.5e}" )
print( f"atm = {atm:20.5f}" )
print( f"Rg = {Rg:20d}" )
pi = 3.14159 Na = 6.02214e+26 kB = 1.38065e-23 atm = 101.32500 Rg = 8314
The format codes can be stored as variables¶
- If you have lots of print statements you only have to change
w,p, andtbelow, instead of changing every print statement.
In [95]:
w = 20
p = 5
t = 'e'
print( f"Na = {Na:{w}.{p}{t}}" )
Na = 6.02214e+26
Right, left, center¶
<for left>for right^for center{var:<w.pt}
In [102]:
print( f"kB = {kB:<20.4e} J/K" )
print( f"kB = {kB:>20.4e} J/K" )
print( f"kB = {kB:^20.4e} J/K" )
kB = 1.3806e-23 J/K kB = 1.3806e-23 J/K kB = 1.3806e-23 J/K