Editing Community Data Science Course (Spring 2023)/Week 4 coding challenges
From CommunityData
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
There's actually nothing to download this time | There's actually nothing to download this time. After class, we'll update with a link to a notebook that is a cleaned up version of what we walked through during the lecture though since this code will likely be very useful. | ||
== #1 Bored API == | == #1 Bored API == | ||
First, let's work through a few examples from the [http://www.boredapi.com/ Bored API] | First, let's work through a few examples from the [http://www.boredapi.com/ Bored API]: | ||
# Write some Python code to use the API to get | # Write some Python code to use the API to get a free activity that I could do with my partner. Turn the data from the API into a sentence that tells me the activity, its accessibility, and its price. | ||
## Extend that code so that it gets me 5 activities and have it write a nicely formatted output. | ## Extend that code so that it gets me 5 activities and have it write a nicely formatted output. | ||
# First, get a totally random activity from the API. Print it out, along with its activity type. Now get me another activity that's of the same type as the first random activity. Print it out too, plus its activity type (to check that they're the same). | # First, get a totally random activity from the API. Print it out, along with its activity type. Now get me another activity that's of the same type as the first random activity. Print it out too, plus its activity type (to check that they're the same). | ||
Line 21: | Line 14: | ||
# Visit the [https://dogapi.dog Dog API website] and read the API documentation | # Visit the [https://dogapi.dog Dog API website] and read the API documentation | ||
# Write a URL that will return a single dog fact ( | # Write a URL that will return a single dog fact and print out just that fact (i.e., not the other JSON material). | ||
# Write a URL that will return 5 dog facts | # Write a single URL that will return 5 dog facts | ||
# Take your | # Take your code to request a single dog fact and put into a Python program that uses <code>requests.get()</code> and passes in parameters with the <code>params=</code> argument. | ||
# Finally, write a for loop that gets sets of | # Finally, write a for loop that gets 5 sets of facts 5 times (you can just try something like <code>for number in [1,2,3,4,5]</code>, downloads the lists of dog facts, and then writes out a new tab-separated values (TSV) file with columns: (1) ID of the dog fact, and (2) the fact itself! | ||
== #3 Mapping! == | == #3 Mapping! == | ||
This set of questions will all require the [https://nominatim.openstreetmap.org/ui/search.html the Nominatim API]. As always, [https://nominatim.org/release-docs/develop/api/Search/ API documentation is online | This set of questions will all require the [https://nominatim.openstreetmap.org/ui/search.html the Nominatim API]. As always, [https://nominatim.org/release-docs/develop/api/Search/ API documentation is online]. | ||
# Are there more | # Are there more cafes in Ballard or Capitol Hill? (Hint: you'll need to look into the "Result limitation" section of the API documentation) | ||
# Are there more dentists near the University or near Downtown? | # Are there more dentists near the University or near Downtown? | ||
# Use the geocoding API endpoint in Nominatim to look up a specific latitude and longitude of your choice (try this building | # Use the geocoding API endpoint in Nominatim to look up a specific latitude and longitude of your choice (try this building!). | ||
# Write a program to find all the ziplines in King County, Washington (or at least all the ones that OSM knows about!). | # Write a program to find all the ziplines in King County, Washington (or at least all the ones that OSM knows about!). | ||
# It's important to be alert and well-caffeinated when ziplining! Once you've found a nearby zipline, have your program use that result to find the nearest cafe each of the ziplines you identify! | ## It's important to be alert and well-caffeinated when ziplining! Once you've found a nearby zipline, have your program use that result to find the nearest cafe each of the ziplines you identify! | ||
# Craft a query using the search API to find colleges in Seattle. (Hint: you'll want to set bounded=1 and use | # Craft a query using the search API to find colleges in Seattle. (Hint: you'll want to set bounded=1 and use viewbox). Print the name and location of every college you find. | ||
## Modify your query so that you include the address details separated out (this is an API option | ## Modify your query so that you include the address details separated out (this is an API option) | ||
## How can you tell that a place returned by the API is in fact a college? | ## How can you tell that a place returned by the API is in fact a college? | ||
## Print the list of colleges into a new TSV file with the following columns: <code>osm_id</code> (a unique ID that OSM uses), the name of the college, latitude, and longitude. | ## Print the list of colleges into a new TSV file with the following columns: <code>osm_id</code> (a unique ID that OSM uses), the name of the college, latitude, and longitude. |