Question: 4 Function Bodies needed to complete. Info: # Begin constants ################################################################################ COLUMN_ID = 0 COLUMN_NAME = 1 COLUMN_HIGHWAY = 2 COLUMN_LAT = 3 COLUMN_LON =

4 Function Bodies needed to complete.

Info:

# Begin constants ################################################################################ COLUMN_ID = 0 COLUMN_NAME = 1 COLUMN_HIGHWAY = 2 COLUMN_LAT = 3 COLUMN_LON = 4 COLUMN_YEAR_BUILT = 5 COLUMN_LAST_MAJOR_REHAB = 6 COLUMN_LAST_MINOR_REHAB = 7 COLUMN_NUM_SPANS = 8 COLUMN_SPAN_DETAILS = 9 COLUMN_DECK_LENGTH = 10 COLUMN_LAST_INSPECTED = 11 COLUMN_BCI = 12

INDEX_BCI_YEARS = 0 INDEX_BCI_SCORES = 1 MISSING_BCI = -1.0

EARTH_RADIUS = 6371

################################################################################ # Sample data for docstring examples ################################################################################ def create_example_bridge_1() -> list: """Return a bridge in our list-format to use for doctest examples.

This bridge is the same as the bridge from row 3 of the dataset. """

return [ 1, 'Highway 24 Underpass at Highway 403', '403', 43.167233, -80.275567, '1965', '2014', '2009', 4, [12.0, 19.0, 21.0, 12.0], 65.0, '04/13/2012', [['2013', '2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003', '2002', '2001', '2000'], [MISSING_BCI, 72.3, MISSING_BCI, 69.5, MISSING_BCI, 70.0, MISSING_BCI, 70.3, MISSING_BCI, 70.5, MISSING_BCI, 70.7, 72.9, MISSING_BCI]] ]

def create_example_bridge_2() -> list: """Return a bridge in our list-format to use for doctest examples.

This bridge is the same as the bridge from row 4 of the dataset. """

return [ 2, 'WEST STREET UNDERPASS', '403', 43.164531, -80.251582, '1963', '2014', '2007', 4, [12.2, 18.0, 18.0, 12.2], 61.0, '04/13/2012', [['2013', '2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003', '2002', '2001', '2000'], [MISSING_BCI, 71.5, MISSING_BCI, 68.1, MISSING_BCI, 69.0, MISSING_BCI, 69.4, MISSING_BCI, 69.4, MISSING_BCI, 70.3, 73.3, MISSING_BCI]] ]

def create_example_bridge_3() -> list: """Return a bridge in our list-format to use for doctest examples.

This bridge is the same as the bridge from row 33 of the dataset. """

return [ 3, 'STOKES RIVER BRIDGE', '6', 45.036739, -81.33579, '1958', '2013', '', 1, [16.0], 18.4, '08/28/2013', [['2013', '2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003', '2002', '2001', '2000'], [85.1, MISSING_BCI, 67.8, MISSING_BCI, 67.4, MISSING_BCI, 69.2, 70.0, 70.5, MISSING_BCI, 75.1, MISSING_BCI, 90.1, MISSING_BCI]] ]

def create_example_bridges() -> List[list]: """Return a list containing three unique example bridges.

The bridges contained in the list are from row 3, 4, and 33 of the dataset (in that order). """ return [ create_example_bridge_1(), create_example_bridge_2(), create_example_bridge_3() ]

################################################################################ # Helper function ################################################################################ def calculate_distance(lat1: float, lon1: float, lat2: float, lon2: float) -> float: """Return the distance in kilometers between the two locations defined by (lat1, lon1) and (lat2, lon2), rounded to the nearest meter.

>>> calculate_distance(43.659777, -79.397383, 43.657129, -79.399439) 0.338 >>> calculate_distance(43.42, -79.24, 53.32, -113.30) 2713.226 """

# This function uses the haversine function to find the # distance between two locations. You do NOT need to understand why it # works. You will just need to call on the function and work with what it # returns. # Based on code at goo.gl/JrPG4j

# convert decimal degrees to radians lon1, lat1, lon2, lat2 = (math.radians(lon1), math.radians(lat1), math.radians(lon2), math.radians(lat2))

# haversine formula t lon_diff = lon2 - lon1 lat_diff = lat2 - lat1 a = (math.sin(lat_diff / 2) ** 2 + math.cos(lat1) * math.cos(lat2) * math.sin(lon_diff / 2) ** 2) c = 2 * math.asin(math.sqrt(a))

return round(c * EARTH_RADIUS, 3)

FUNCTION 1

-----------------------

def get_bridge_condition(bridges: List[list], bridge_id: int) -> float: """Return the most recent BCI score of the bridge in bridges with id bridge_id.

The most recent BCI score is the BCI score given to the bridge in the highest (i.e., most recent) year. If there is no score for every year, return MISSING_BCI.

>>> example_bridges = create_example_bridges() >>> get_bridge_condition(example_bridges, 1) 72.3 """

FUNCTION 2

----------------------

def clean_length_data(raw_length: str) -> float: """Return the length of the bridge based on the value in raw_length.

If raw_length is an empty string, return 0.0.

Precondition: - if raw_length is not the empty string, it can be converted to a float

>>> clean_length_data('12') 12.0 """

FUNCTION 3

----------------------

def trim_from_end(raw_data: list, count: int) -> None: """Update raw_data so that count elements have been removed from the end.

Preconditions: - count >= 0 - len(raw_data) >= count

>>> my_lst = [[72.3, 69.5, 70.0, 70.3, 70.5, 70.7, 72.9], '', '72.3', '', \ '69.5', '', '70', '', '70.3', '', '70.5', '', '70.7', '72.9', ''] >>> trim_from_end(my_lst, 14) >>> my_lst [[72.3, 69.5, 70.0, 70.3, 70.5, 70.7, 72.9]] """

FUNCTION 4:

def clean_bci_data(bci_years: List[str], start_year: int, bci_scores: list) -> \ None: """Update bci_years so that each element contains the year as a string, starting from start_year and decreasing by one for each subsequent element, until bci_years has the same length as bci_scores. Also update bci_scores so that all non-empty string values are float values, and all empty string values are MISSING_BCI.

Preconditions: - len(bci_years) == 0 - len(bci_scores) > 0 - start_year - len(bci_scores) >= 0 - every value in bci_scores is either an empty string or can be converted to a float

>>> years = [] >>> scores = ['', '72.3', '', '69.5', '', '70.0', '', '70.3', ''] >>> clean_bci_data(years, 2013, scores) >>> years ['2013', '2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005'] >>> scores [-1.0, 72.3, -1.0, 69.5, -1.0, 70.0, -1.0, 70.3, -1.0] """

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!