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.

Fun with the HP 30b

Fun with the HP 30 b Introduction The following programs are for the HP 30b Business Professional. Did you know that the 30b...