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',
         'Aldebaran':'Taurus', 'Sadalmelik':'Aquarius',
         '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:  Sadalmelik      ==> Constellation: Aquarius      
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.