2.7 Classroom Exercises#

List of exercises and estimated completion times

2a - Occupancy Dictionary 5 minutes

2b - Occupancy Dictionary Extension 5 minutes

2c - Functions 15 minutes

2d - Using Libraries 15 minutes

2e - Longitude and Latitude 15 minutes

2f - Defining Classes 45 minutes

2g - Longitude and Latitude Extension 10 minutes

Exercise 2a Occupancy Dictionary#

Relevant Sections: 2.0.2

In one of the module 1 exercises you designed a data structure to represent a maze using dictionaries and lists.

The answer to your initial maze model output might have looked similar to this:

house = {
    "living": {
        "exits": {"north": "kitchen", "outside": "garden", "upstairs": "bedroom"},
        "people": ["James"],
        "capacity": 2,
    },
    "kitchen": {"exits": {"south": "living"}, "people": [], "capacity": 1},
    "garden": {"exits": {"inside": "living"}, "people": ["Sue"], "capacity": 3},
    "bedroom": {
        "exits": {"downstairs": "living", "jump": "garden"},
        "people": [],
        "capacity": 1,
    },
}

Take this maze data structure.

First write an expression to print out a new dictionary, which holds, for each room, that room’s capacity.

The output should look like:

{"bedroom": 1, "garden": 3, "kitchen": 1, "living": 2}

Exercise 2b Occupancy Dictionary Extension#

Relevant Sections: 2.0.2 and 2.0.4

Now, write a program to print out a new dictionary, which gives,for each room’s name, the number of people in it. Don’t add in a zero value in the dictionary for empty rooms.

The output should look similar to:

{"garden": 1, "living": 1}

Exercise 2c Functions#

Relevant Sections: 2.1.1, 2.1.8, (2.0.2)

Write a function that will take the following input and return a list containing only even integers

(1, 1.99999999999, "three", 20/5, 5, 6, "sju", "8", 9, 10., 11, 12)

The call to your function could look something like this:

my_function(1, 1.99999999999, "three", 20/5, 5, 6, "sju", "8", 9, 10., 11, 12)

or

my_function(*inputs)

Exercise 2d Using Libraries#

Relevant Sections: 2.2.1

Investigate the similarities and differences between the responses (if any) from the numpy, scipy, statistics and math modules to the following calculations:

\(\pi\)

\(log_{10}(n)\) where n is positive

\(log_{10}(n)\) where n is negative

The mean of the numbers 1 to 9 (inclusive)

For those interested, each of these libraries has their own documentation. NumPy, SciPy, statistics and math

Exercise 2e Longitude and Latitude#

Relevant Sections: 2.4.2, 2.4.1

In section 2.4.2 a map of an area collected from the internet was displayed.

Write a function that will accept user-specified latitude, and longitude and return the response. Then use IPython to display the image as in 2.5.2

The answer could look something like:

function_response = my_function(lat, lon)
Image(function_response)

some interesting coordinates are:

coordinates_as_lat_lon = [
    (36.2110, -115.2669),
    (53.0066, 7.1920),
    (41.3908, 2.1631),
    (40.7822, -73.9653),
    (25.8380, 50.6050),
]

Exercise 2f Defining Classes#

Relevant Sections: 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5

In section 2.6.4 and 2.6.5 two examples of the maze model were given.

Compare the two solutions. Discuss with a partner which you like better, and why.

Then, starting from scratch, design your own. What choices did you make that are different?

Exercise 2g Longitude and Latitude Extension#

Relevant Sections: 2.3.7

Use the function you wrote in 2e above as the basis for a new function that will receive the longitude, latitude, zoom level and a name to save the file as. Use this function to save a map image file somewhere on your local disk.

Zoom between 14 and 16 work well for the example coordinates