我正在尝试从python教科书中解决问题:
编写一个程序,要求用户输入他们在赛道上奔跑的次数,然后使用循环提示他们输入每个圈的圈时间。循环结束后,程序应显示最快圈速的时间,最慢圈速的时间以及平均圈速。
到目前为止,还没有引入列表的概念,但是我无法想到一种无需在列表上使用min(),max()即可计算最小,最大间段时间的方法。
这是我的代码:
mapStateToProps
答案 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'))