CSC111 HW 11

From CSclasswiki
Revision as of 19:26, 17 January 2010 by Thiebaut (talk | contribs) (1 revision)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

--Thiebaut 21:47, 20 April 2009 (UTC)



This assignment is due on Monday, 4/27/09, at midnight. You may work in pairs on this assignment, in which case you may submit one program only, and include the two names in the header of the program.


Problem #1

YahooFinance.png


Write a program that computes the current value of somebody's portfolio. The user of your program will be prompted to enter the symbol of the companies in which she owns shares, along with the number of shares, and the program will output the total value of her investment.

Here is an example of how your program will work (the user input is underlined):

Please enter the symbols of each company, followed by the number of shares:
? IBM 1000
? CSCO 2000
? MSFT 1000
?
The total value of your investment in IBM, CSCO, MSFT is $154000
Cisco quote.png

The program went to the URL of Yahoo Finance, at http://finance.yahoo.com/q?s=CSCO (for the CSCO symbol), and retrieved the real-time quote for IBM, Cisco, and Microsoft. The figure shows that the quote for Cisco at the time this was written was $17.55.


Requirements

  • Call your program hw11b.py
  • Your program should use a loop to get the input from the user. The loop will stop automatically (break) when the user enters an empty line. We assume that the user will never have more than 100 different companies to list.
  • Your program should assume that the symbol of the company is always listed first, and that the number of shares is always second on the line, separated from the symbol by white space. This number can be an integer or a float. If your program expects the information in a different manner, the program that tests the submitted assignment will not be able to correctly feed data to your program, and it will look like your program is not working. So make sure you follow carefully the requirement for the input.
  • Your program should get the information from http://finance.yahoo.com
  • Your program should use the getUrlInfo.py module.
  • Your program should be fully documented, with a main header, a header for each function, and documentation at key parts of the code.

Extra Information

Be careful; you will find that the string "yfs_l90" is an important part of finding the information of interest here. The second part of the string starts with an ell, not a one!

For your information: You can find the list of NASDAQ symbols here.

Submission

   submit  hw11  hw11b.py
   submit  hw11  getUrlInfo.py

Problem #2

AverageMassTemperatures.gif

For this problem, you have to compute the average current temperature of Massachusetts by picking 10 Massachusetts towns at random, figuring out the current temperature in each one of them, and computing the average of the 10 temperatures.

Requirements

contains a list of Mass towns with their zip code. Make your program get the list of all the towns from this URL.

  • Picking 10 towns at random from the list: Section 10.4.2 of the text book covers this very nicely. Use the same method.
  • Output. The output of your program should contain the name of the 10 towns, their zip code, the temperature in each one, and the overall temperature. Something like this would work:


01026 Cummington 54 degrees
01032 Goshen 52 degrees
01037 Hardwick 53 degrees
01041 Holyoke 45 degrees
01063 Northampton 44 degrees
01075 South Hadley 44 degrees
01082 Ware 53 degrees
01083 Warren 39 degrees
01088 West Hatfield 52 degrees
01094 Wheelwright 51 degrees
Average Massachusetts temperature: 48.7 degrees


  • The average temperature should be a float.
  • The program will not ask the user for any information (and neither will the program we will use to test all the programs submitted, so do not make your program prompt the user for any information, please!)
  • Your program should use the module getUrlInfo.py you have been using in Lab 11.

Submission

Submit both your program and your version of getUrlInfo.py, which you are allowed to modify. If you modify it, please indicate it in the header of hw11a.py. Thanks!

    submit  hw11  hw11a.py
    submit  hw11  getUrlInfo.py

Documentation

Make sure you document your program well. Check the recent solution programs for past homework assignments as guidance.







Selected solution programs for Lab #11

Challenge 1

# warning: this program is totally undocumented
# (on purpose :-)

import getUrlInfo

towns = """
 02351 Abington
       02018 Accord
       01720 Acton
       02743 Acushnet
       01220 Adams
       01001 Agawam
       02134 Allston
       01913 Amesbury
       01002 Amherst
"""

def main():
    #--- create an object of type getUrlInfo ---
    tempSite = getUrlInfo.getUrlInfo()

    #--- initialize it ---
    tempSite.setUrl( "http://www.weather.com/outlook/"
                     +"travel/businesstraveler/local/%s" )
    tempSite.setMarkers( "\"obsTempTextA\">", "°" )

    sumTemp = 0
    count = 0
    townNames = []
    for line in towns.split( "\n" ):
        words = line.split()
        if len( words )==2:
            zip, town = words
            temp = tempSite.getInfo( zip )
            if temp is not None:
                print "temperature in %s is %s" % ( town, temp )


main()    

Challenge 2

# warning: this program is totally undocumented
# (on purpose :-)

import getUrlInfo

def main():
    dirSite = getUrlInfo.getUrlInfo()

    dirSite.setUrl( "http://www.smith.edu/global_campusdirectory.php"
                     +"?name=%s" )

    # html section of interest:
    # <br>(413)585-4222<br><a href="mailto:jcardell@smith.edu?subject

    dirSite.setMarkers( "br>(413)", "<br>" )
    phone = dirSite.getInfo( "cardell" )
 
    dirSite.setMarkers( "<a href=\"mailto:", "?subject" )
    email = dirSite.getInfo( "cardell" )

    print "phone = %s  email = %s " % ( phone, email )


main()