计算最小值,最大值而不使用列表

时间:2019-02-13 19:44:29

标签: python loops

我正在尝试从python教科书中解决问题:

编写一个程序,要求用户输入他们在赛道上奔跑的次数,然后使用循环提示他们输入每个圈的圈时间。循环结束后,程序应显示最快圈速的时间,最慢圈速的时间以及平均圈速。

到目前为止,还没有引入列表的概念,但是我无法想到一种无需在列表上使用min(),max()即可计算最小,最大间段时间的方法。

这是我的代码:

mapStateToProps

3 个答案:

答案 0 :(得分:0)

好吧,我认为您实际上可以很简单地做到这一点,而无需列出。只要跟踪到目前为止看到的最大和最小数字即可。不知道这是否有效,但是一个简单的例子是:

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

某处可能存在一个错误,可以处理一些小问题,但是这个想法仍然存在,您应该能够使用该概念使其正确运行。

答案 1 :(得分:0)

您可以考虑采用“缓存和转储”方法,在此方法中检查当前条目是最快还是最慢。如果是这种情况,请使用当前输入值替换跟踪变量。

total_time = 0

for lap in range(1,num_laps+1):
    current_lap_time = eval(input("what's the lap time?"))

    # if it's the first lap, it will be our starting point
    if lap == 1:
        slowest_time = current_lap_time
        fastest_time = current_lap_time

    #check if the current lap time is the slowest
    if current_lap_time > slowest_time:
        slowest_time = current_lap_time

    # check if the current lap time is the fastest
    if current_lap_time < fastest_time:
        fastest_time = current_lap_time

    # calculate total time
    total_time += current_lap_time

# calculate average time
average_time = total_time / num_laps

答案 2 :(得分:0)

这很容易;我们可以在不使用列表的情况下解决它;这是代码:

    enter Lap_count=int(input('How many laps you have taken'))
    slowest_lap=0.0
    Fastest_lap=0.0
    total=0.0
    for num in range(Lap_count) :
         print('This is the input for lap ', num+1,)
         lap_time = float(input('Enter the lap time:'))
         print('=======================================')
         if num == 0 :
             slowest_lap = lap_time
             Fastest_lap = lap_time
         total += lap_time
         if  slowest_lap > lap_time:
             slowest_lap = lap_time
         if Fastest_lap < lap_time:
             Fastest_lap = lap_time

        print('The fastest lap is:', Fastest_lap)
        print('The slowest lap is:', slowest_lap)
        print('The averages is:', format((total/Lap_count), '.2f'))