Difference between revisions of "CSC111 Homework 7 Solution 2011"

From dftwiki3
Jump to: navigation, search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
--[[User:Thiebaut|D. Thiebaut]] 11:43, 9 November 2011 (EST)
 
--[[User:Thiebaut|D. Thiebaut]] 11:43, 9 November 2011 (EST)
 
----
 
----
 +
<onlydft>
 +
==Good solution program==
 +
<source lang="python">
 +
# hw7.py
 +
# 111a-av VWu
 +
# (Edited by D. Thiebaut)
 +
#
 +
# This program takes data on past and current US presidents whose list is given as a python
 +
# string where the information is listed one president per line, in Comma-Separated-Value form.
 +
# The program displays selected information from this list of presidents,
 +
# such as president number, his name, the date he took office, the date he left office, and
 +
# length of his presidency in a more readable format, i.e.:
 +
# ' 1st President: Washington, George,            took office on 30 Apr 1789 left office on 4 Mar 1797: 8-year presidency.'
 +
# For current President Obama, it prints:
 +
# '44th President: Obama, Barack,                took office on 20 Jan 2009, incumbent.'
 +
#
  
 +
presidents = \
 +
"""Presidency ,President ,Wikipedia Entry,Took office ,Left office ,Party ,Portrait,Thumbnail,Home State
 +
1,George Washington,http://en.wikipedia.org/wiki/George_Washington,30/04/1789,4/03/1797,Independent ,GeorgeWashington.jpg,thmb_GeorgeWashington.jpg,Virginia
 +
2,John Adams,http://en.wikipedia.org/wiki/John_Adams,4/03/1797,4/03/1801,Federalist ,JohnAdams.jpg,thmb_JohnAdams.jpg,Massachusetts
 +
3,Thomas Jefferson,http://en.wikipedia.org/wiki/Thomas_Jefferson,4/03/1801,4/03/1809,Democratic-Republican ,Thomasjefferson.gif,thmb_Thomasjefferson.gif,Virginia
 +
4,James Madison,http://en.wikipedia.org/wiki/James_Madison,4/03/1809,4/03/1817,Democratic-Republican ,JamesMadison.gif,thmb_JamesMadison.gif,Virginia
 +
5,James Monroe,http://en.wikipedia.org/wiki/James_Monroe,4/03/1817,4/03/1825,Democratic-Republican ,JamesMonroe.gif,thmb_JamesMonroe.gif,Virginia
 +
6,John Quincy Adams,http://en.wikipedia.org/wiki/John_Quincy_Adams,4/03/1825,4/03/1829,Democratic-Republican/National Republican ,JohnQuincyAdams.gif,thmb_JohnQuincyAdams.gif,Massachusetts
 +
7,Andrew Jackson,http://en.wikipedia.org/wiki/Andrew_Jackson,4/03/1829,4/03/1837,Democratic ,Andrew_jackson_head.gif,thmb_Andrew_jackson_head.gif,Tennessee
 +
8,Martin Van Buren,http://en.wikipedia.org/wiki/Martin_Van_Buren,4/03/1837,4/03/1841,Democratic ,MartinVanBuren.gif,thmb_MartinVanBuren.gif,New York
 +
9,William Henry Harrison,http://en.wikipedia.org/wiki/William_Henry_Harrison,4/03/1841,4/04/1841,Whig,WilliamHenryHarrison.gif,thmb_WilliamHenryHarrison.gif,Ohio
 +
10,John Tyler,http://en.wikipedia.org/wiki/John_Tyler,4/04/1841,4/03/1845,Whig,JohnTyler.jpg,thmb_JohnTyler.jpg,Virginia
 +
11,James K. Polk,http://en.wikipedia.org/wiki/James_K._Polk,4/03/1845,4/03/1849,Democratic ,JamesKPolk.gif,thmb_JamesKPolk.gif,Tennessee
 +
12,Zachary Taylor,http://en.wikipedia.org/wiki/Zachary_Taylor,4/03/1849,9/07/1850,Whig,ZacharyTaylor.jpg,thmb_ZacharyTaylor.jpg,Louisiana
 +
13,Millard Fillmore,http://en.wikipedia.org/wiki/Millard_Fillmore,9/07/1850,4/03/1853,Whig,MillardFillmore.png,thmb_MillardFillmore.png,New York
 +
14,Franklin Pierce,http://en.wikipedia.org/wiki/Franklin_Pierce,4/03/1853,4/03/1857,Democratic ,FranklinPierce.gif,thmb_FranklinPierce.gif,New Hampshire
 +
15,James Buchanan,http://en.wikipedia.org/wiki/James_Buchanan,4/03/1857,4/03/1861,Democratic ,JamesBuchanan.gif,thmb_JamesBuchanan.gif,Pennsylvania
 +
16,Abraham Lincoln,http://en.wikipedia.org/wiki/Abraham_Lincoln,4/03/1861,15/04/1865,Republican/National Union,AbrahamLincoln.jpg,thmb_AbrahamLincoln.jpg,Illinois
 +
17,Andrew Johnson,http://en.wikipedia.org/wiki/Andrew_Johnson,15/04/1865,4/03/1869,Democratic/National Union,AndrewJohnson.gif,thmb_AndrewJohnson.gif,Tennessee
 +
18,Ulysses S. Grant,http://en.wikipedia.org/wiki/Ulysses_S._Grant,4/03/1869,4/03/1877,Republican ,UlyssesSGrant.gif,thmb_UlyssesSGrant.gif,Ohio
 +
19,Rutherford B. Hayes,http://en.wikipedia.org/wiki/Rutherford_B._Hayes,4/03/1877,4/03/1881,Republican ,RutherfordBHayes.png,thmb_RutherfordBHayes.png,Ohio
 +
20,James A. Garfield,http://en.wikipedia.org/wiki/James_A._Garfield,4/03/1881,19/09/1881,Republican ,James_Garfield.jpg,thmb_James_Garfield.jpg,Ohio
 +
21,Chester A. Arthur,http://en.wikipedia.org/wiki/Chester_A._Arthur,19/09/1881,4/03/1885,Republican ,ChesterAArthur.gif,thmb_ChesterAArthur.gif,New York
 +
22,Grover Cleveland,http://en.wikipedia.org/wiki/Grover_Cleveland,4/03/1885,4/03/1889,Democratic ,Grover_Cleveland_2.jpg,thmb_Grover_Cleveland_2.jpg,New York
 +
23,Benjamin Harrison,http://en.wikipedia.org/wiki/Benjamin_Harrison,4/03/1889,4/03/1893,Republican ,BenjaminHarrison.gif,thmb_BenjaminHarrison.gif,Indiana
 +
24,Grover Cleveland,http://en.wikipedia.org/wiki/Grover_Cleveland,4/03/1893,4/03/1897,Democratic ,Grover_Cleveland.jpg,thmb_Grover_Cleveland.jpg,New York
 +
25,William McKinley,http://en.wikipedia.org/wiki/William_McKinley,4/03/1897,14/9/1901,Republican ,WilliamMcKinley.gif,thmb_WilliamMcKinley.gif,Ohio
 +
26,Theodore Roosevelt,http://en.wikipedia.org/wiki/Theodore_Roosevelt,14/9/1901,4/3/1909,Republican ,TheodoreRoosevelt.jpg,thmb_TheodoreRoosevelt.jpg,New York
 +
27,William Howard Taft,http://en.wikipedia.org/wiki/William_Howard_Taft,4/3/1909,4/03/1913,Republican ,WilliamHowardTaft.jpg,thmb_WilliamHowardTaft.jpg,Ohio
 +
28,Woodrow Wilson,http://en.wikipedia.org/wiki/Woodrow_Wilson,4/03/1913,4/03/1921,Democratic ,WoodrowWilson.gif,thmb_WoodrowWilson.gif,New Jersey
 +
29,Warren G. Harding,http://en.wikipedia.org/wiki/Warren_G._Harding,4/03/1921,2/8/1923,Republican ,WarrenGHarding.gif,thmb_WarrenGHarding.gif,Ohio
 +
30,Calvin Coolidge,http://en.wikipedia.org/wiki/Calvin_Coolidge,2/8/1923,4/03/1929,Republican ,CoolidgeWHPortrait.gif,thmb_CoolidgeWHPortrait.gif,Massachusetts
 +
31,Herbert Hoover,http://en.wikipedia.org/wiki/Herbert_Hoover,4/03/1929,4/03/1933,Republican ,HerbertHover.gif,thmb_HerbertHover.gif,Iowa
 +
32,Franklin D. Roosevelt,http://en.wikipedia.org/wiki/Franklin_D._Roosevelt,4/03/1933,12/4/1945,Democratic,FranklinDRoosevelt.gif,thmb_FranklinDRoosevelt.gif,New York
 +
33,Harry S. Truman,http://en.wikipedia.org/wiki/Harry_S._Truman,12/4/1945,20/01/1953,Democratic,HarryTruman.jpg,thmb_HarryTruman.jpg,Missouri
 +
34,Dwight D. Eisenhower,http://en.wikipedia.org/wiki/Dwight_D._Eisenhower,20/01/1953,20/01/1961,Republican ,Dwight_D_Eisenhower.jpg,thmb_Dwight_D_Eisenhower.jpg,Texas
 +
35,John F. Kennedy,http://en.wikipedia.org/wiki/John_F._Kennedy,20/01/1961,22/11/1963,Democratic,John_F_Kennedy.jpg,thmb_John_F_Kennedy.jpg,Massachusetts
 +
36,Lyndon B. Johnson,http://en.wikipedia.org/wiki/Lyndon_B._Johnson,22/11/1963,20/1/1969,Democratic,Lyndon_B_Johnson.gif,thmb_Lyndon_B_Johnson.gif,Texas
 +
37,Richard Nixon,http://en.wikipedia.org/wiki/Richard_Nixon,20/1/1969,9/8/1974,Republican,RichardNixon.gif,thmb_RichardNixon.gif,California
 +
38,Gerald Ford,http://en.wikipedia.org/wiki/Gerald_Ford,9/8/1974,20/01/1977,Republican,Gerald_R_Ford.jpg,thmb_Gerald_R_Ford.jpg,Michigan
 +
39,Jimmy Carter,http://en.wikipedia.org/wiki/Jimmy_Carter,20/01/1977,20/01/1981,Democratic ,James_E_Carter.gif,thmb_James_E_Carter.gif,Georgia
 +
40,Ronald Reagan,http://en.wikipedia.org/wiki/Ronald_Reagan,20/01/1981,20/01/1989,Republican ,ReaganWH.jpg,thmb_ReaganWH.jpg,California
 +
41,George H. W. Bush,http://en.wikipedia.org/wiki/George_H._W._Bush,20/01/1989,20/01/1993,Republican ,George_H_W_Bush.gif,thmb_George_H_W_Bush.gif,Texas
 +
42,Bill Clinton,http://en.wikipedia.org/wiki/Bill_Clinton,20/01/1993,20/01/2001,Democratic ,Clinton.jpg,thmb_Clinton.jpg,Arkansas
 +
43,George W. Bush,http://en.wikipedia.org/wiki/George_W._Bush,20/01/2001,20/01/2009,Republican ,George_W_Bush.jpg,thmb_George_W_Bush.jpg,Texas
 +
44,Barack Obama,http://en.wikipedia.org/wiki/Barack_Obama,20/01/2009,Incumbent ,  Democratic  ,Barack_Obama.jpg,thmb_Barack_Obama.jpg,Illinois"""
 +
 +
monthsTable = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]
 +
 +
def removeHeader( lines ):
 +
    """remove the initial header of list and return presidential information"""
 +
    header = lines[0]
 +
    lines = lines[1:]
 +
    return lines
 +
 +
def presName( president ):
 +
    """take president names and return them in the format: last, first m.i., """
 +
    presidentWords = president.split( )
 +
    name = presidentWords[-1] + ', ' + ' '.join( presidentWords[0:-1] )
 +
    return name
 +
   
 +
def reworkDate( date ):
 +
    """if not incumbent, take date and return in format, i.e. 30 Apr 1789 """
 +
    if date.strip() == "Incumbent":
 +
        date = ("incumbent", "")
 +
    else:       
 +
        day, month, year = date.split( '/' )
 +
        # remove leading 0 from month
 +
        if month[0] == '0':
 +
            month = month[1]
 +
        # transform it into an integer to use it as an index in monthsTable
 +
        month = eval( month )
 +
   
 +
        # if month is 1, get monthsTable[0], which is "Jan". Same for 2, etc.
 +
        month = monthsTable[ month -1 ]
 +
 +
        # put back together tookOffice date
 +
        date = ( day + " " + month, year ) 
 +
 +
    return date
 +
   
 +
 +
def configurePresidency( presidency ):
 +
    """return presidency in format 1st/2nd/3rd/4th/etc. President"""
 +
    if presidency in ['1', '21', '31', '41']:
 +
        return( presidency + "st President: " )
 +
    elif presidency in ['2', '22', '32', '42']:
 +
        return( presidency + "nd President: " )
 +
    elif presidency in ['3', '23', '33', '43']:
 +
        return( presidency + "rd President: " )
 +
    else:
 +
        return( presidency + "th President: " )
 +
 +
def printAll( presidency, name, tookOffice, leftOffice, year1, year2 ):
 +
    """receives selected altered information and prints in nice format"""
 +
 +
    # configure presidency
 +
    presidency = configurePresidency( presidency )
 +
    print( presidency, end = "" )
 +
    # president's name
 +
    print( "%-30s" % (name+','), end = "" )
 +
    # took office:
 +
    print( " took office on %5s" % tookOffice, " ", year1, sep="", end="" )
 +
    # left office:
 +
    if leftOffice == "incumbent":
 +
        print( ", incumbent.", end = "" )
 +
    elif leftOffice != "incumbent":
 +
        print( " left office on %5s" % leftOffice, " ", year2, ": ", eval( year2 )-eval( year1 ), "-year presidency.", sep = "" )
 +
    print()
 +
 +
   
 +
 +
def main():
 +
    # get a list of individual lines, one president per line
 +
    lines = presidents.split( '\n' )
 +
 +
    # remove the header
 +
    lines = removeHeader( lines )
 +
 +
    # treat each president, one at a time
 +
    for line in lines:
 +
        # get the different fields
 +
        presidency ,president ,wikipediaEntry, tookOffice ,leftOffice, \
 +
                        party ,portrait, thumbnail, homeState = line.split( ',' )
 +
 +
        # rework the president's name
 +
        name = presName( president )
 +
 +
        # replace numeric month by 3-letter month, and return year separately.
 +
        tookOffice, year1 = reworkDate( tookOffice )
 +
       
 +
        # same work with leftOffice; if "Incumbent" return 'incumbent'
 +
        leftOffice, year2 = reworkDate( leftOffice )
 +
 +
        printAll( presidency, name, tookOffice, leftOffice, year1, year2 )
 +
       
 +
main()
 +
 +
</source>
 +
<br />
 +
 +
==The original==
 
* Note: this program is not documented.  See how obscure a program can be when it is not documented properly!  :-o
 
* Note: this program is not documented.  See how obscure a program can be when it is not documented properly!  :-o
 
<br />
 
<br />
Line 144: Line 302:
 
<br />
 
<br />
 
<br />
 
<br />
 
+
</onlydft>
 
[[Category:CSC111]][[Category:Python]][[Category:Homework]]
 
[[Category:CSC111]][[Category:Python]][[Category:Homework]]

Latest revision as of 18:11, 18 April 2018

--D. Thiebaut 11:43, 9 November 2011 (EST)



...