我正在尝试找到平均速度,并希望使用Python最简单的方法做到这一点



所以我想用最简单的方法找到多个输入(在本例中为2(的平均速度,单位是(米/秒(和(km/h(,而不是这样做:

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))

还有更简单的方法吗?感谢您的帮助:(

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

但在那之后,如果你组装列表,使用统计会容易得多。平均

像下面这样的东西可能会更好、更灵活:

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

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

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()))

相关内容

最新更新