## Thursday, November 2, 2017

### Adventures in Python: Using a Dictionary to Print a Table (OT: HP Prime new keyboard colors)

Adventures in Python:  Using a Dictionary to Print a Table
(OT: HP Prime new keyboard colors)

Here is a short program where a dictionary and the format command are used to print a nice looking table.

In Python, a dictionary is defined as list of two-element entries, in the format { x1:y1, x2:y2, x3:y3, … }.  Where x1, y1, x2, y2, and so on are strings or numbers.

We can also designate the format of data within a print statement.  The general syntax:

print( a string that contains {n:ABC}.format(n0, n1, n2, …))

You can as many print formats as you want.  The format inside of {n:ABC}:
n = the nth argument, starting with 0
A = 0 for padded zeros, < align left, > align right, ^ align center
B = length of a field in the form of L.N  (L = length of the field, N = number of decimal places, note that L is the minimum filed length, not maximum)
C = d or i = integer, f - floating, r or s = string

Example:
>>> import math

Print π with 10 decimal places:
>>> print('{0:1.10f}'.format(math.pi))
3.1415926536

Print π with 8 decimal places:
>>> print('{0:1.8f}'.format(math.pi))
3.14159265

Print the first five letters of the alphabet from a string of the entire alphabet:
>>> print('{0:10.5s}'.format('abcdefghijklmnopqrstuvwxyz'))
abcde

Sample script:

# Program 011:  Using format in print

# General syntax:

# print(' ... {n:ABC} '.format(x0, x1))
# n = the nth argument, starting with 0
# A = 0 for padded zeros, < align left, > align right, ^ align center
# B = length of a field
# C = d or i = integer, f - floating, r or s = string

# x0, x1 are items

# If a table is used, use a for loop with tablename.items
# Table sytnax =  { item0 : item1, [start a new row]}
# for x0, x1 in table.items():
#  print('...   '.format(x0,x1))
# For this, table can only have 2 times per row?

# table of the famous stars
table = {'Antares':'Scorpius', 'Regulus':'Leo',
'Siruis':'Canis Major', 'Vega':'Lyra',
'Polaris':'Ursa Minor', 'Deneb':'Cygnus',
'Alpha Centauri':'Centaurus', 'Altair':'Aquila',
'Castor':'Gemini', 'Betelgeuse':'Orion',
'Fomalhaut':'Piscis Austrinus', 'Spica':'Virgo'}

print('Astronomy\'s Famous Stars')
# need \' for the apostrophe
# for our example let x0 = star, x1 = constellation
for star, constellation in table.items():
# 0 = star, 1 = constellation
# <15s = left aligned, 15 spaces, string
print('Star:  {0:<15s} ==> Constellation: {1:<15s}'
.format(star,constellation))

Result:

Astronomy's Famous Stars
Star:  Antares         ==> Constellation: Scorpius
Star:  Regulus         ==> Constellation: Leo
Star:  Aldebaran       ==> Constellation: Taurus
Star:  Siruis          ==> Constellation: Canis Major
Star:  Vega            ==> Constellation: Lyra
Star:  Polaris         ==> Constellation: Ursa Minor
Star:  Deneb           ==> Constellation: Cygnus
Star:  Alpha Centauri  ==> Constellation: Centaurus
Star:  Altair          ==> Constellation: Aquila
Star:  Castor          ==> Constellation: Gemini
Star:  Betelgeuse      ==> Constellation: Orion
Star:  Fomalhaut       ==> Constellation: Piscis Austrinus
Star:  Spica           ==> Constellation: Virgo

Overtime

I finally got a new HP Prime with the new color contrast (darker blue shift text, slightly darker orange shift text, keys are a lighter color, the number keys are white), and yes, I do like the new design. (model number G8X92AA, hardware version C, 2016 edition)

Eddie

This blog is property of Edward Shore, 2017.