У меня есть программа, которая выполняет некоторые синтаксические разборки и принимает во времени в формате микросекунды. Однако, читая эти данные, не очень красиво видеть 10000000000 микросекунд. Что-то вроде x секунд или x минут выглядит лучше.Эффективное преобразование времени в Python
Так .. Я построил это:
def convert_micro_input(micro_time):
t = int(micro_time)
if t<1000: #millisecond
return str(t) +' us'
elif t<1000000: #second
return str(int(t/1000)) + ' ms'
elif t<60000000: #is a second
return str(int(t/1000000)) + ' second(s)'
elif t<3600000000:
return str(int(t/60000000)) + ' minute(s)'
elif t<86400000000:
return str(int(t/3600000000)) + ' hour(s)'
elif t<604800000000:
return str(int(t/86400000000)) + ' day(s)'
else:
print 'Exceeded Time Conversion Possibilities'
return None
Теперь, в моих глазах, это выглядит хорошо, однако, мой босс не был удовлетворен. Он сказал, что цифры сбивают с толку с точки зрения удобочитаемости, если кто-то должен был изменить это через год, и он сказал, чтобы это произошло в замкнутом цикле.
Итак, с учетом сказанного. Под этими ограничениями я задаюсь вопросом, как реализовать эту же логику в более читаемой форме (возможно, используя питонный эквивалент макроса), а также поместить ее в цикл while.
Спасибо всем.
Ваш босс прав о больших количествах. Обычно такого рода вещи вы не делаете с заранее вычисленными числами, но прописаны с более легкими для понимания. Это помогает с последующей отладкой и уменьшает риск. Например, сколько секунд в день? Я не знаю, с головы до ног, но если я вижу '60 * 60 * 24', я знаю, что код прав. Точно так же, действительно ли 360000000 действительно правильный номер при повторном преобразовании? Нет, это не так, потому что я отрубил ноль, и вы, вероятно, даже не заметили! –
Также использование str.format было бы немного более визуально привлекательным '' {} us'.format (t) ' –
Возможный дубликат [Лучший способ инкрементного преобразования микросекунд в соответствующие преобразования в python?] (Http: // stackoverflow .com/questions/31251377/best-way-to-incrementally-convert-microseconds-to-their-соответствующие-conversion-i) – bcdan