Codecademy Intermediate Python3 Project: Nile

Note:
1. Step #12 has a mistake. Instead of dividing, we multiply.
driver_time = distance * driver.speed

######################################

from nile import get_distance, format_price, SHIPPING_PRICES
from test import test_function

# Define calculate_shipping_cost() here:
def calculate_shipping_cost(from_coords, to_coords, shipping_type = 'Overnight'):
  from_lat, from_long = from_coords
  to_lat, to_long = to_coords

  distance = get_distance(*from_coords, *to_coords)

  shipping_rate = SHIPPING_PRICES[shipping_type]

  price = distance * shipping_rate
  return format_price(price)

# Test the function by calling 
test_function(calculate_shipping_cost)

# Define calculate_driver_cost() here
def calculate_driver_cost(distance, *drivers):
  cheapest_driver = None
  cheapest_driver_price = None

  for driver in drivers:
    driver_time = distance * driver.speed
    price_for_driver = driver.salary * driver_time

    if cheapest_driver == None:
      cheapest_driver = driver
      cheapest_driver_price = price_for_driver

    elif price_for_driver < cheapest_driver_price:
      cheapest_driver = driver
      cheapest_driver_price = price_for_driver

    return cheapest_driver_price, cheapest_driver

# Test the function by calling 
test_function(calculate_driver_cost)

# Define calculate_money_made() here
def calculate_money_made(**trips):
  total_money_made = 0

  for trip_id, trip in trips.items():
    trip_revenue = trip.cost - trip.driver.cost
    total_money_made += trip_revenue
  return total_money_made

# Test the function by calling 
test_function(calculate_money_made)