我试图找到平均速度,并希望使用Python实现这一点的最简单方法

2024-09-30 07:21:17 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我想用最简单的方法求出多个输入(在本例中为2)中的平均速度(米/秒)和(公里/小时),而不是这样做:

dist = float(input('Distance(m) : '))
time = float(input('Finish time(s) : '))
dist_2 = float(input('Distance(m) : '))
time_2 = float(input('Finish time(s) : '))

speed = (dist / time) 
speed_2 = (dist / time) * 3.6
average = (dist / time) + (dist_2 / time_2) / 2
average_2 = (dist / time) + (dist_2 / time_2) / 2 * 3.6

print('speed is(m/s) : ', round(speed, 3))
print('speed is(km/h) : ', round(speed_2, 3))
print('average is(m/s) : ', round(average, 3))
print('average is (km/h) : ', round(average_2, 3))

还有更简单的方法吗?谢谢你的帮助:)


Tags: 方法inputtimeisdistfloatdistancespeed
2条回答

您可以编写一个函数来消除从用户读取速度时的重复代码和中间变量:

def speed():
  (dist, time) = [ float(input(q + ' : ')) for q in ('Distance(m)', 'Finish 
  return dist / time

然后编写一个函数,在给定速度元组的情况下生成报告:

def report(speeds):
    for t in ('speed', lambda l: l[0]), ('average', lambda l: sum(l) / len(l)):
        for u in (('m/s', 1), ('km/h', 3.6)):
            print(f'{t[0]} is({u[0]}) : ', round(t[1](speeds) * u[1], 3))   

并通过以下方式驾驶:

report((speed(), speed()))

如果您正在查看用户输入,那么输入端总是有点笨重

但在那之后,如果你把列表组合起来,使用统计数据就会容易得多

下面这样的内容可能会更好、更灵活:

import statistics

dists = []
times = []
speedsMS = []
nJourneys = int(input("How many journeys have been made?"))
for i in range(0, nJourneys):
    dists.append(input("What distance was journey " + str(i+1) + "?"))
    times.append(input("what time did journey " + str(i+1) + " take?"))
    speedsMS.append(dists[len(dists)-1]/times[len(times)-1])


averageSpeedMS = statistics.mean(speedsMS)
averageSpeedKMHr = averageSpeedMS * 3.6

相关问题 更多 >

    热门问题