In: Computer Science
Project #2
## Language Should be Python. Using for, while, if, elif only. No advanced functions.
Assignment Specifications
The program will compute and display information for a company which rents vehicles to its customers. For a specified customer, the program will compute and display the amount of money charged for that customer’s vehicle rental.
The basic structure of the main loop is
Prompt to see if the user wants to continue
While the value is ‘Y’:
All your other code goes here
Prompt to see if the user wants to continue
It will then process that customer information and display the results. At the end, the program should ask the user if he wants to process another request and it will keep asking until the user enter 0.
Code 'B' (budget)
base charge: $40.00 for each day
mileage charge: $0.25 for each mile driven
Code 'D' (daily)
base charge: $60.00 for each day
mileage charge: no charge if the average number of miles driven per day is 100 miles or less; otherwise, $0.25 for each mile driven above the 100 mile per day limit.
Code 'W' (weekly)
base charge: $190.00 for each week (or fraction of a week)
mileage charge: no charge if the average number of miles driven per week is 900 miles or less; $100.00 per week if the average number of miles driven per week exceeds 900 miles but does not exceed 1500 miles; otherwise, $200.00 per week plus $0.25 for each mile driven above the 1500 mile per week limit.
The amount billed to the customer is the sum of the base charge and the mileage charge.
All output will be appropriately labeled and formatted. The number of miles driven will be rounded to one fractional digit. The amount of money billed will be displayed with a dollar sign and will be rounded to two fractional digits (for example, $125.99 or $43.87). Note that we do not have the ability yet to fine tune the output so if cents end in zero that final zero will not be
displayed—that is fine for this project. We provide a file strings.txt with the strings we used to make it easier for you to match our output.
Hint: use a while loop that will loop until a correct classification code is entered. Here is pseudo code of that loop:
Prompt for a value
While the value is not correct:
Print an error message
Prompt for a value
Assignment Notes
Test 1
Welcome to car rentals.
At the prompts, please enter the following:
Customer's classification code (a character: BDW)
Number of days the vehicle was rented (int)
Odometer reading at the start of the rental period (int)
Odometer reading at the end of the rental period (int)
Would you like to continue (Y/N)? N
Thank you for your loyalty.
Test 2
Welcome to car rentals.
At the prompts, please enter the following:
Customer's classification code (a character: BDW)
Number of days the vehicle was rented (int)
Odometer reading at the start of the rental period (int)
Odometer reading at the end of the rental period (int)
Would you like to continue (Y/N)? Y
Customer code (BDW): D
Number of days: 1
Odometer reading at the start: 100003
Odometer reading at the end: 100135
Customer summary:
classification code: D
rental period (days): 1
odometer reading at start: 100003
odometer reading at end: 100135
number of miles driven: 13.2
amount due: $ 60.0
Would you like to continue (Y/N)? Y
Customer code (BDW): D
Number of days: 4
Odometer reading at the start: 101010
Odometer reading at the end: 108200
Customer summary:
classification code: D
rental period (days): 4
odometer reading at start: 101010
odometer reading at end: 108200
number of miles driven: 719.0
amount due: $ 319.75
Would you like to continue (Y/N)? Y
Customer code (BDW): D
Number of days: 2
Odometer reading at the start: 002000
Odometer reading at the end: 004000
Customer summary:
classification code: D
rental period (days): 2
odometer reading at start: 2000
odometer reading at end: 4000
number of miles driven: 200.0
amount due: $ 120.0
Would you like to continue (Y/N)? Y
Customer code (BDW): B
Number of days: 3
Odometer reading at the start: 999997
Odometer reading at the end: 000005
Customer summary:
classification code: B
rental period (days): 3
odometer reading at start: 999997
odometer reading at end: 5
number of miles driven: 0.8
amount due: $ 120.2
Would you like to continue (Y/N)? N
Thank you for your loyalty.
Test 5
Welcome to car rentals.
At the prompts, please enter the following:
Customer's classification code (a character: BDW)
Number of days the vehicle was rented (int)
Odometer reading at the start of the rental period (int)
Odometer reading at the end of the rental period (int)
Would you like to continue (Y/N)? Y
Customer code (BDW): x
*** Invalid customer code. Try again. ***
Customer code (BDW): y
*** Invalid customer code. Try again. ***
Thanks for the question. Below is the code you will be needing Let me know if you have any doubts or if you need anything to change. Thank You !! =========================================================================== def compute_bill(code,days,start_reading,end_reading): distance=getDistance(start_reading,end_reading) if code=='B': return 40*days + (distance)*0.25 elif code=='D': average= (distance)/days if average<=100: return 60*days else: print(distance) return 60*days+ 0.25*(distance-days*100) elif code=='W': average_weekly=(distance)*7/days if average_weekly<=900: return 190*(days)/7 elif average_weekly<=1500: return 100*(days)/7 else: return 200*days/7 + (average_weekly-1500)*0.25 else: return 0 def getDistance(start_reading,end_reading): if start_reading > end_reading: distance = (1+(999999 - start_reading) + end_reading) / 10.0 else: distance = end_reading - start_reading distance /= 10.0 return distance def printInstructions(): print('Welcome to car rentals.') print('At the prompts, please enter the following:') print('Customer\'s classification code (a character: BDW)') print('Number of days the vehicle was rented (int)') print('Odometer reading at the start of the rental period (int)') print('Odometer reading at the end of the rental period (int)') def main(): #printInstructions() while True: answer=input('Would you like to continue (Y/N)? ') if answer=='Y': while True: code = input('Customer code (BDW): ').upper() if code not in ['B','D','W']: print('*** Invalid customer code. Try again. ***') else: break days=int(input("Number of days: ")) start_reading=int(input('Odometer reading at the start: ')) end_reading=int(input('Odometer reading at the end: ')) bill=compute_bill(code,days,start_reading,end_reading) print('Customer summary:') print('classification code: {}'.format(code)) print('rental period (days): {}'.format(days)) print('odometer reading at start: {}'.format(start_reading)) print('odometer reading at end: {}'.format(end_reading)) print('number of miles driven: {}'.format(getDistance(start_reading,end_reading))) print('amount due: $ {0:.2f}'.format(bill)) else: print('Thank you for your loyalty.') break main()
==========================================================================