将时间列表转换为总时间

Rya*_*axe 2 python time function list

我有3个列表,一个用于小时,一个用于分钟,一个用于秒.我所做的是创建一个函数,将3个列表作为输入并计算总时间.

我的问题是函数是如此多余而我向你提出的问题是愚蠢的:什么是更好的方法来做到这一点.

这是我的功能:

def final_time(hours,minutes,seconds):
    draft_hours = sum(hours)
    draft_minutes = sum(minutes)
    draft_seconds = sum(seconds)
    adding_seconds = str(draft_seconds/60.0)
    second_converting = adding_seconds.split(".")
    seconds_to_minutes = int(second_converting[0])
    seconds_to_seconds = draft_seconds - (seconds_to_minutes * 60)
    total_seconds = str(seconds_to_seconds)
    more_minutes = draft_minutes + seconds_to_minutes
    adding_minutes = str(more_minutes/60.0)
    minute_converting = adding_minutes.split(".")
    minutes_to_hours = int(minute_converting[0])
    minutes_to_minutes = more_minutes - (minutes_to_hours * 60)
    total_minutes = str(minutes_to_minutes)
    total_hours = str(draft_hours + minutes_to_hours)
    return total_hours + " hours, " + total_minutes + " minutes, and " + total_seconds + " seconds."
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

my_hours = [5, 17, 4, 8]
my_minutes = [40, 51, 5, 24]
my_seconds = [55, 31, 20, 33]
print final_time(my_hours,my_minutes,my_seconds)
Run Code Online (Sandbox Code Playgroud)

以上回报:

36 hours, 2 minutes, and 19 seconds.
Run Code Online (Sandbox Code Playgroud)

它确实有效,但正如你所看到的,这个函数不是一个pythonic也不是一个有效的函数...... 更好的方法是什么?

Rob*_*obᵩ 6

s = sum(hours)*3600+sum(minutes)*60+sum(seconds)
return '%d hours %d minutes %d seconds'%( s/3600, (s%3600)/60, s%60)
Run Code Online (Sandbox Code Playgroud)