Question: PLEASE READ CAREFULLY and code in PYTHON Write a function record repair() that records a repair for a car and returns the total cost of

PLEASE READ CAREFULLY and code in PYTHON

Write a function record repair() that records a repair for a car and returns the total cost of all repairs for that car (including the new repair). The function takes four arguments, in this order:

cars: a list of Car objects

vin: the VIN for the car that we want to record a repair for

repair_desc: a description of the repair

repair_cost: the cost of the repair (an integer)

The function must search the list of Car objects for the car with the given vin, call the add repair method of the Car class with the given repair desc and repair cost to record a repair for the car, and then return the new total repair costs for the car. If no Car object is found in the list cars with the given vin, the function should simply return 0.

PROVIDED BELOW IS THE "BAREBONE" CLASSES THAT ARE USED AND REFERENCED IN THE PROBLEM. FEEL FREE TO ADD METHODS AS NECESSARY

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) 

BELOW IS THE INFORMATION GIVEN AS TO THE TEST CASES

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() vin = 'HSY113Y' # car currently has at least one repair repair = 'Punctured tire' cost = 40 print('Testing record_repair() for cars1, {}, "{}", {}: {}'.format(vin, repair, cost, record_repair(cars1, vin, repair, cost))) vin = 'MZJ291E' # car currently has no repairs repair = 'Cracked rim' cost = 800 print('Testing record_repair() for cars1, {}, "{}", {}: {}'.format(vin, repair, cost, record_repair(cars1, vin, repair, cost))) vin = 'XYZ123X' # car not in cars1 list repair = 'Broken mirror' cost = 250 print('Testing record_repair() for cars1, {}, "{}", {}: {}'.format(vin, repair, cost, record_repair(cars1, vin, repair, cost))) 

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!