Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Formatting in Python 2.7

I have a column formatting issue:

from math import sqrt
n = raw_input("Example Number? ")
n = float(n)
sqaureRootOfN = sqrt(n)

print '-'*50
print ' # of Decimals', '\t', 'New Root', '\t', 'Percent error'
print '-'*50
for a in range(0,10):
    preRoot = float(int(sqaureRootOfN * 10**a))
    newRoot = preRoot/10**a
    percentError = (n - newRoot**2)/n*100
    print ' ', a, '\t\t', newRoot, '\t\t', percentError, '%'

It comes out like:

enter image description here

Not in the same column!?!

like image 995
mccurcio Avatar asked Sep 13 '25 05:09

mccurcio


1 Answers

@Bjorn has the right answer here, using the String.format specification. Python's string formatter has really powerful methods for aligning things properly. Here's an example:

from math import sqrt
n = raw_input("Example Number? ")
n = float(n)
sqaureRootOfN = sqrt(n)

print '-'*75
print ' # of Decimals', ' ' * 8, 'New Root', ' ' * 10, 'Percent error'
print '-'*75
for a in range(0,10):
    preRoot = float(int(sqaureRootOfN * 10**a))
    newRoot = preRoot/10**a
    percentError = (n - newRoot**2)/n*100
    print " {: <20}{: <25}{: <18}".format(a, newRoot, str(percentError) + ' %')

Note that instead of tabs I'm using spaces to space things out. This is because tabs are really not what you want to use here, because the rules for how tabs space things are inconsistent (and depend on what your terminal/viewer settings are).

This is what the answer looks like:

---------------------------------------------------------------------------
 # of Decimals          New Root            Percent error
---------------------------------------------------------------------------
 0                   9.0                      18.1818181818 %   
 1                   9.9                      1.0 %             
 2                   9.94                     0.198383838384 %  
 3                   9.949                    0.0175747474747 % 
 4                   9.9498                   0.00149490909092 %
 5                   9.94987                  8.7861717162e-05 %
 6                   9.949874                 7.45871112931e-06 %
 7                   9.9498743                1.4284843602e-06 %
 8                   9.94987437               2.14314187048e-08 %
 9                   9.949874371              1.33066711409e-09 %
like image 131
Mike Axiak Avatar answered Sep 14 '25 19:09

Mike Axiak