Используя divmod() функцию, которая выполняет только одно деление для получения как частного, так и остатка, вы можете получить результат очень быстро, всего двумя математическими операциями:
m, s = divmod(seconds, 60) h, m = divmod(m, 60)
А затем используйте форматирование строки для преобразования результата в желаемый результат:
print('{:d}:{:02d}:{:02d}'.format(h, m, s)) # Python 3 print(f'{h:d}:{m:02d}:{s:02d}') # Python 3.6+
Ответ 3
Я вряд ли могу назвать это простым способом (по крайней мере, я не помню синтаксис), но можно использовать time.strftime, который дает больше контроля над форматированием:
from time import strftime from time import gmtime
strftime("%H:%M:%S", gmtime(666)) '00:11:06'
strftime("%H:%M:%S", gmtime(60*60*24)) '00:00:00'
gmtime используется для преобразования секунд в специальный формат кортежей, который strftime() требуется.
Примечание: Усекается после 23:59:59
Ответ 4
Это мой быстрый трюк:
from humanfriendly import format_timespan secondsPassed = 1302 format_timespan(secondsPassed) # '21 minutes and 42 seconds'