I am trying to solve a problem from a python textbook:
Write a program that asks the user to enter the number of times that they have run around a racetrack, and then uses a loop to prompt them to enter the lap time for each of their laps. When the loop finishes, the program should display the time of their fastest lap, the time of their slowest lap, and their average lap time.
So far the concept of lists haven’t been introduced but I can’t think of a way to calculate the min, max lap time without using min(),max() on a list.
Here is my code:
num_laps = int(input('Enter number of laps you ran: ')) total_time = 0.0 lap_time_list = [] for lap in range(1,num_laps+1): lap_time = float(input('nEnter the lap time in minutes for each lap from first to last: ')) total_time += lap_time lap_time_list.append(lap_time) avg_time = total_time / num_laps fast_lap = min(lap_time_list) slowest_lap = max(lap_time_list) # Display the time of fastest lap, slowest lap and average lap time print('nAverage lap time:',avg_time,'mins') print('nFastest lap time:',fast_lap,'mins') print('nSlowest lap time:',slowest_lap,'mins')
Advertisement
Answer
well i think you can actually do this fairly simply, without a list. just keep track of the largest and smallest numbers seen so far.. right? not sure if this works but a simple example is something along the lines of:
num_laps = int(input('Enter number of laps you ran: ')) slowest, fastest, avg = 0, 1000, 0 # fastest just needs to be a very large number usually like a int.big for lap in range(num_laps): lap_time = int(input('nEnter the lap time in minutes for each lap from first to last: ')) # assumes round numbers if lap_time > slowest: slowest = lap_time if lap_time < fastest: fastest = lap_time avg += lap_time avg /= num_laps
there’s probably a bug in there somewhere, and edge cases to handle but the idea remains and you should be able to make it work correctly using the concept.