Reputation: 3
I'm trying to get the ticket to display correctly and every time it just displays '$1'. Am I not returning the value correctly? I can't figure this out.
from random import randrange
def main():
exceeded_speed = 1
ticket_cost = '$1'
speed_limit = 50
vehicle_speed = 1
get_limit(speed_limit)
get_speed(vehicle_speed, speed_limit)
ticket_cost = ticket_calculator(speed_limit, vehicle_speed, exceeded_speed, ticket_cost)
print('Exceeded speed limit by', ticket_cost, 'fine.')
def get_limit(limit):
limit = int(input('Please Enter the speed limit: '))
while limit >= 70 or limit <= 20:
print('ERROR: Speed limit must be between 20 and 70')
limit = int(input('Please Enter the speed limit: '))
return limit
def get_speed(speed, limit):
speed = int(input("Please enter the vehicle speed: "))
while speed >= 200 or speed <= limit:
print('ERROR: Vehicle speed must be between 71 and 199')
speed = int(input("Please enter the vehicle speed: "))
return speed, limit
def ticket_calculator(limit, speed, exceeded, cost):
exceeded = speed - limit
if exceeded in range (1,11):
cost = '1-10 MPH. $50'
exceeded = ''
elif exceeded in range (11,16):
cost = '11-15 MPH. $75'
elif exceeded in range (16,21):
cost = '16-20 MPH. $150'
elif exceeded >= 21:
cost = '21+ MPH. $300'
return cost
main()
Upvotes: 0
Views: 62
Reputation: 54645
From your code, you are thinking that this:
def get_limit(limit):
...
return limit
will return the value in the parameter that was passed. That's not true. Arguments always go IN. What you need is:
speed_limit = get_limit()
vehicle_speed = get_speed(speed_limit)
And then modify the function headers accordingly:
def get_limit():
...
def get_speed(limit):
...
You had get_speed
returning a tuple. It only needs to return the vehicle speed. This works:
def main():
speed_limit = get_limit()
vehicle_speed = get_speed(speed_limit)
ticket_cost = ticket_calculator(speed_limit, vehicle_speed)
print('Exceeded speed limit by', ticket_cost, 'fine.')
def get_limit():
limit = int(input('Please Enter the speed limit: '))
while limit >= 70 or limit <= 20:
print('ERROR: Speed limit must be between 20 and 70')
limit = int(input('Please Enter the speed limit: '))
return limit
def get_speed(limit):
speed = int(input("Please enter the vehicle speed: "))
while speed >= 200 or speed <= limit:
print('ERROR: Vehicle speed must be between 71 and 199')
speed = int(input("Please enter the vehicle speed: "))
return speed
def ticket_calculator(limit, speed):
exceeded = speed - limit
if exceeded in range (1,11):
cost = '1-10 MPH. $50'
exceeded = ''
elif exceeded in range (11,16):
cost = '11-15 MPH. $75'
elif exceeded in range (16,21):
cost = '16-20 MPH. $150'
elif exceeded >= 21:
cost = '21+ MPH. $300'
return cost
main()
Simpler is:
def ticket_calculator(limit, speed):
exceeded = speed - limit
if exceeded >= 21:
cost = '21+ MPH. $300'
elif exceeded >= 16:
cost = '16-20 MPH. $150'
elif exceeded >= 11:
cost = '11-15 MPH. $75'
elif exceeded >= 1:
cost = '1-10 MPH. $50'
else:
cost = "N/A"
return cost
Output:
C:\tmp>python x.py
Please Enter the speed limit: 50
Please enter the vehicle speed: 150
Exceeded speed limit by 21+ MPH. $300 fine.
Upvotes: 1