0

我想将字符串转换为分钟,然后将其全部加起来并将其作为字符串返回,我在执行此操作时遇到了困难。

我有一个包含这个的列表:

TimeL = ['02:32','03:43','01:05','56:03']

我想将这些分钟:秒加在一起,并以小时:毫米:秒的格式返回一个总数,但如果它们的值不足以组成一个小时,我只想返回一个毫米:秒的值。

到目前为止,我所能做的就是将每件事都转换为秒并将它们相加,但这不是我想要的,这只是我知道该怎么做。

def getTIME(s):
    l = s.split(":")
    return int(l[0])*(60) + int(l[1])


for i in range(len(TimeL)):
        NEW = getTIME(TimeL[i])
        NewTotalTime = NewTotalTime + NEW

所以我的方法将返回一个只有几秒的值。所以就像 3432 秒。我希望它是小时:分钟:秒,我卡住了。任何人都可以提供一点帮助,谢谢!

4

2 回答 2

1

使用以下内容:

str(datetime.timedelta(seconds=3432))

您需要为此导入datetime模块。您已经有了秒数,这会将其转换为包含小时、分钟和秒的字符串。

于 2012-04-06T22:18:14.897 回答
1

这就是你想要的。1 分钟 = 60 秒,因此您将秒除以 60。您的问题是您需要在 python 中除以 60.0,以便获得确切的值(浮点值)。一旦你有了这个,你取最小的整数值 ( math.floor),例如 150 秒是 2.5 分钟,所以你需要 2 分钟,2 分钟是 120 秒,你从 150 中删除你得到 30。这是剩余的秒数。你用相同的推理数小时(60 分钟)

import sys
import math

def getSeconds(s):
    l = s.split(":")
    return int(l[0])*(60) + int(l[1])

def getTotalString(time_list):
    total_secs = 0
    for time_str in time_list:
        total_secs += getSeconds(time_str)

    total_mins = total_secs/60.0
    mins = math.floor(total_mins)
    secs = total_secs-mins*60

    if mins<60:
        return '%.2d:%.2d' % (mins, secs)
    else:
        hours = math.floor(mins/60.0)
        mins = mins-60*hours
        return '%.2d:%.2d:%.2d' % (hours, mins, secs)

if __name__ == '__main__':
    print getTotalString(sys.argv[1:])

计算秒数总和的方法可以在 Python 中用一行代码完成:

total_secs = sum(getSeconds(time_str) for time_str in time_list)

sum计算列表(或迭代器)中数字的总和。您可以为其提供要添加的数字列表或数字生成器,即the number of seconds in each time string in the list

我希望我说得尽可能清楚和有启发性,但是您可以使用 datetime 模块的更简单的解决方案。

更新:这是 Python 2.x 而不是 Python 3。所以它可能无法按预期工作,但想法是一样的,语法是不同的。

于 2012-04-06T22:31:19.710 回答