CSC111 Lab 11
--Thiebaut 20:27, 20 April 2009 (UTC)
- 1 Exercise #1: Astrology
- 2 Exercise #2: Temperature
- 3 Exercise 3: Smith Directory
- 4 Exercise 4: Using classes
- 5 Exercise 5: Using the class to get the fortune of the day
- 6 Exercise 6: Using the class to get somebody's email address
Exercise #1: Astrology
Play with the astrology program we saw in class. You can get a copy of it with
- Run it.
- Play with it. Try different signs.
- Test it. Enter a sign in uppercase letters. One in lowercase letters. In mixed case letters.
- Enter a sign that does not exist.
Verify that it prints the correct information, i.e. the information that appears on the Web page at URL http://horoscopes.astrology.com/index/dailyindex.html (By the way, URL stands for Uniform Resource Locator).
Keep this program safely tucked away: you will modify it to get the temperature of a location in the next exercise.
Exercise #2: Temperature
You will do the same exercise we did this morning in class, but this time you write a program that gets the current temperature from a location for which you provide the zip-code.
- Verify that you get the current weather for Amherst.
- Modify the zip code at the end of the URL in the navigation bar of your browser to find the temperature at other locations in the States (you can find zip codes here).
- Now make the browser open the source for this page (right click, View Page Source on FireFox, Apple-U on a Mac, right click, View Source on Internet Explorer).
- Search the source for the words '"Feels Like'" which should take you to the part of the html page that contains the temperature. Locate the temperature which is followed by °.
- Figure out what string to ask your Python program to search for that is unique enough, and preceding the temperature digits. Let's call it beginSection.
- Figure out what string to ask your Python program to search for that is unique enough, and trails the temperature digits. Let's call this string endSection
- Make a copy of the getAstrology.py program and call it getTemperature.py:
cp getAstrology.py getTemperature.py
- Edit it and make it behave as follows:
- it will ask the user for a zip code
- it will include the zip code in the URL of the weather.com site (http://www.weather.com/outlook/travel/businesstraveler/local/)
- it will grab the html page from this URL
- it will slice the text that appears between the two markers you identified earlier.
- it will print the temperature and the zip code in a sentence.
Exercise 3: Smith Directory
Same as Exercise 2. This time the URL is http://www.smith.edu/global_campusdirectory.php and you get information on a person by appending ?name=person-name at the end of the URL.
For example, if you wanted information on Judy Cardell, you would write the URL as
Follow the same steps you took in Exercise 2, but create instead a program called getDirectoryInfo.py, which asks the user for a name and returns that person's email address.
Exercise 4: Using classes
Get a copy of the getUrlInfo.py module we saw in class this morning:
This program is a module, but it can also be used as a stand-alone program.
Run it as a stand-alone program as follows:
And verify that you get the correct temperature for zip code 01002. This zip code is hard-wired in the program. Modify the program so that it gets the temperature for a different zip code, for example that of Beverly Hills, CA, zip code 90210.
Creating a new program that uses this module
You will now use getUrlInfo.py as a module that is imported by another program.
Create this new program with emacs, and call it getTemp2.py.
# getTemp2.py import getUrlInfo def main(): #--- create an object from the clas getUrlInfo --- tempSite = getUrlInfo.getUrlInfo() #--- initialize it --- tempSite.setUrl( "http://www.weather.com/outlook/" +"travel/businesstraveler/local/%s" ) tempSite.setMarkers( "obsTempTextA\">", "°" ) #--- get the information from the site --- zip = raw_input( "Enter zip code: " ) temperature = tempSite.getInfo( zip ) print "temperature in %s = %s degrees" % ( zip, temperature ) main()
- Run the program
- Verify that it gives the correct information when you feed it different zip codes.
Challenge #1 of the Day
Assume that we want the average temperature in Massachusetts by taking the individual temperatures for the following 9 towns, for which the zip code is indicated on the left-hand side, and by computing the overall average:
02351 Abington 02018 Accord 01720 Acton 02743 Acushnet 01220 Adams 01001 Agawam 02134 Allston 01913 Amesbury 01002 Amherst
Modify your last program so that it computes this average temperature over these 9 towns.
- Use a loop!
- Put the whole list above in """ triple quotes """ and split it sections that are useful to you
Exercise 5: Using the class to get the fortune of the day
Use what you did for Exercise 4 and create a new program called getAstrology2.py that is a clone of getTemperature2.py, but that asks the user for her sign, and displays her astrological daily horoscope.
Exercise 6: Using the class to get somebody's email address
Same idea as for Exercise 5, but this time you create a new program, called getEmail2.py that uses the getUrlInfo.py module, asks the user for a person's name, and returns that person's email address (assuming he/she works at Smith).
Challenge #2 of the Day
Modify your getEmail2.py program so that it reports not only the email address of the person, but also his/her phone number.