Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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.

image text in transcribed

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

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Systems Introduction To Databases And Data Warehouses

Authors: Nenad Jukic, Susan Vrbsky, Svetlozar Nestorov

1st Edition

1943153191, 978-1943153190

More Books

Students also viewed these Databases questions