Question
Python Part 3 Write a function find worst brand() that searches a list of cars and returns the brand of car that has the worst
Python
Part 3
Write a function find worst brand() that searches a list of cars and returns the brand of car that has the worst repair record in terms of total repair costs. Since there might be several cars of the same brand, it will be necessary to sum the repair costs for all cars of each brand, determine which brand had the greatest total repair cost over all cars in the list, and finally, return the name of that brand. If two (or more) brands have the same maximum total repair code, the function can return either brand.
Hint: consider using a dictionary, where the keys are brands and the values are the total costs for the brands. Another hint: to retrieve a list of the keys in a dictionary, you can use this syntax:
my_dict = { } ...code that stores key/value pairs in my_dict... key_list = my_dict.keys()
The idea then is to iterate over the list of keys, find the maximum value, and return the key for that maximum value. In the context of the find worst brand() function, finding the key with the largest value is equivalent to finding the brand with the highest total cost.
class Car: def __init__(self, vin, brand, model, year): self._vin = vin self._brand = brand self._model = model self._year = year self._repairs = [] def add_repair(self, repair_desc, repair_cost): self._repairs += [Repair(repair_desc, repair_cost)] def __repr__(self): return 'VIN: ' + self._vin + ' ' + \ ' Brand: ' + self._brand + ' ' + \ ' Model: ' + self._model + ' ' + \ ' Year: ' + str(self._year) + ' ' class Repair: def __init__(self, desc, cost): self._desc = desc self._cost = cost def __repr__(self): return self._desc + ': $' + str(self._cost) # Part 1 def record_repair(cars, vin, repair_desc, repair_cost): vin_values = [] for i in range(len(cars)): vin_values.append(cars[i]._vin) if vin in vin_values: repairs = cars[vin_values.index(vin)]._repairs if len(repairs) != 0: temp_cost = 0 for i in range(len(repairs)): temp_cost += repairs[i]._cost return temp_cost + repair_cost else: return repair_cost else: return 0 # Part 2 def sort_cars(cars): def total_cost(car): repairs = car._repairs total_cost = 0 for repair in repairs: total_cost += repair._cost return total_cost pos = 0 while pos if pos == 0 or total_cost(cars[pos]) else: temp = cars[pos] cars[pos] = cars[pos - 1] cars[pos - 1] = temp pos -= 1 # Part 3 def find_worst_brand(cars): #type your code here return None
if __name__ == '__main__': def reset_car_database(): c01 = Car('XYZ123X', 'Toyota', 'Camry', 2012) c02 = Car('HSY113Y', 'Honda', 'Civic', 2016) c03 = Car('MZJ291E', 'Ford', 'Escape', 2009) c04 = Car('KJD922P', 'Jeep', 'Wrangler', 2011) c05 = Car('TRQ235K', 'Hyundai', 'Sonata', 2017) c06 = Car('JNH47GB', 'Toyota', 'Camry', 2011) c07 = Car('K83JDE3', 'Honda', 'Pilot', 2009) c08 = Car('MCJD83J', 'Hyundai', 'Elantra', 2013) c09 = Car('9EM2JSK', 'Toyota', 'Camry', 2002) c10 = Car('JF83JKS', 'Honda', 'Civic', 2012) c01.add_repair('Broken axle', 2900) c01.add_repair('Punctured tire', 40) c02.add_repair('Cracked windshield', 1000) c04.add_repair('Oil change', 45) c04.add_repair('New clearcoat', 550) c05.add_repair('Punctured tire', 30) c05.add_repair('Cracked windshield', 1000) c06.add_repair('Popped dents', 75) c06.add_repair('Broken headlight', 80) c06.add_repair('Broken taillight', 95) c07.add_repair('Rebuilt engine', 4880) c09.add_repair('Broken headlight', 80) c09.add_repair('Punctured tire', 80) c10.add_repair('Replaced windshield wipers', 125) car_list1 = [c02, c03, c05, c06, c07, c08, c09] car_list2 = [c01, c03, c04, c05, c06, c08, c09, c10] car_list3 = [c03, c04, c08] return car_list1, car_list2, car_list3
cars1, cars2, cars3 = reset_car_database() print('Testing find_worst_brand() with cars1: ' + str(find_worst_brand(cars1))) print('Testing find_worst_brand() with cars2: ' + str(find_worst_brand(cars2))) print('Testing find_worst_brand() with cars3: ' + str(find_worst_brand(cars3)))Examples: Function Call Return Value find worst brand (cars1) "Honda. d-worst-brand (Cars2) "Toyota" find find worst-brand (cars3) "Jeep" Note that the quotation marks displayed in the examples are there to emphasize that the return values are strings. You should not add quotation marks to your return values
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started