[Tutor] Need to be taught a trick or two about printing in neat columns
Dick Moores
rdm at rcblue.com
Thu Nov 2 15:14:32 CET 2006
At 03:31 AM 11/2/2006, you wrote:
>At 03:13 AM 11/2/2006, Kent Johnson wrote:
> >Luke Paireepinart wrote:
> > > Instead of helping you with your specific problem, I'll give you this
> > > information and see what you can make of it.
> > >
> > > >>> print 'a'.ljust(20)+'b'.ljust(20)
> > > a b
> > > >>> print 'carrah'.ljust(20)+'foobar'.ljust(20)
> > > carrah foobar
> >
> >Another way to do this is with string formatting, I think it is a more
> >readable and flexible solution:
> >
> >In [1]: print '%-20s %-20s' % ('a', 'b')
> >a b
> >
> >In [2]: print '%-20s %-20s' % ('carrah', 'foobar')
> >carrah foobar
> >
> >See this page for details:
> >http://docs.python.org/lib/typesseq-strings.html
>
>Thanks, Kent. I agree. So now that function has become
>
>def printListOfAllUnitsAndAbbreviations():
> """
> Prints a 3-column list of all units and their abbreviations,
>but not their categories.
> """
> lstAll = allUnitsAndTheirAbbreviationsAndCategories()
> for i in range(0, len(lstAll)-1 ,3):
> print '%-27s %-27s %-27s' % (lstAll[i][2:],
>lstAll[i+1][2:], lstAll[i+2][2:])
> print
Oops! Got overconfident. Didn't check to see if it actually printed
the whole list. It didn't. Left off "rad: radian", because there are
46 items in the list (46%3 is 1, not 0). So now the only way I could
see to print all 46 was to add 2 empty dummies to make 48, which is
divisible by 3, and also modify the range in the second function. Is
there a better way, which is also a general solution that will work
when I subtract or add to the list? See the two modified functions below.
Dick
def allUnitsAndTheirAbbreviationsAndCategories():
"""
A list of all units, their abbreviations and categories.
"""
abbs = [
'l mi: mile',
'l km: kilometer',
'l m: meter',
'l yd: yard',
'l ft: foot',
'l in: inch',
'l cm: centimeter',
'l mm: millimeter',
'l fur: furlong',
'l lea: league',
'l nm: nautical mile',
'a ha: hectare',
'a ac: acre',
'a mi2: square mile',
'a km2: square kilometer',
'a m2: square meter',
'a yd2: square yard',
'a ft2: square foot',
'a in2: square inch',
'a cm2: square centimeter',
'w kg: kilogram',
'w lb: pound',
'w gm: gram',
'w oz: ounce',
'v qt: quart',
'v oz: ounce',
'v l: liter',
'v ml: milliliter',
'v gal: gallon',
'v tbsp: tablespoon',
'v tsp: teaspoon',
'v impgal: Imperial Gallon',
'v yd3: cubic yard',
'v m3: cubic meter',
'v ft3: cubic foot',
'v mi3: cubic mile',
'v km3: cubic kilometer',
't F: Fahrenheit',
't C: Celsius',
't K: Kelvin',
's mph: miles per hour',
's knots: knots',
's mps: miles per second',
's fps: feet per second',
'd deg: degree',
'd rad: radian',
' ',
' '
]
return abbs
def printListOfAllUnitsAndAbbreviations():
"""
Prints a 3-column list of all units and their abbreviations,
but not their categories.
"""
lstAll = allUnitsAndTheirAbbreviationsAndCategories()
for i in range(0, len(lstAll), 3):
print '%-27s %-27s %-27s' % (lstAll[i][2:],
lstAll[i+1][2:], lstAll[i+2][2:])
print
More information about the Tutor
mailing list