#python #python-3.x
Вопрос:
Поэтому я хочу найти среднюю скорость на нескольких входах (в данном случае 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))
Есть ли более простой способ сделать это? Спасибо за любую помощь 🙂
Ответ №1:
Конец ввода всегда будет немного неуклюжим, если вы ищете пользовательские вводы
Но после этого, если бы вы собрали списки, было бы намного проще использовать статистику.значит
Что-то вроде приведенного ниже может быть немного приятнее и гибче:
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
Ответ №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()))
Комментарии:
1. Спасибо! Это сработало, и я просто хотел спросить вас, что означает код ‘print(f'{t[0]} ({u[0]}):’, круглый(t[1](скорости) * u[1], 3))’?
2.
f''
представляет собой строку формата, в которой оцениваются переменные внутри{}
.t
тип for-это переменная внешнего цикла. Он повторяет кортеж с двумя элементами. Каждый элемент представляет собой строку и функцию.u
for unit-это переменная внутреннего цикла, которая также представляет собой кортеж из двух элементов. Каждый элемент состоит из строки единицы измерения и коэффициента.3. Это выглядит сложным, но трюк, чтобы придумать это, очень общий. Сравните 4 строки, все, что идентично, вы перенесете в инструкцию печати точно так, как есть. Все, что отличается, вы помещаете в переменную или вызов функции в зависимости от того, является ли это значением или поведением (вычислением).
4. Не забудьте принять лучший ответ и проголосовать за те, которые полезны.