22:11 + 22:22 = 44:33
varible_A = ('22:11')
varible_B = ('22:11')
左边的数字(22)是分钟,右边的数字(11)是秒
我尝试将这两个数字相加,以得到
total = 44:22
这是一个额外的奖励,但真的会帮助我*
有没有可能像对待时间一样对待数字...
varible_A = ('22:50')
varible_B = ('22:30')
我想要45:20
而不是
44:80
发布于 2013-05-17 22:39:33
使用datetime.timedelta()
对持续时间进行建模:
from datetime import timedelta
def to_delta(value):
minutes, seconds = map(int, value.split(':'))
return timedelta(minutes=minutes, seconds=seconds)
var_a = to_delta('22:50')
var_b = to_delta('22:30')
var_a + var_b
然后,您可以将timedelta()
对象转换回分钟+秒表示形式:
def to_minutes_seconds(delta):
return '{:02.0f}:{:02.0f}'.format(*divmod(delta.total_seconds(), 60))
演示:
>>> var_a = to_delta('22:50')
>>> var_b = to_delta('22:30')
>>> var_a + var_b
datetime.timedelta(0, 2720)
>>> to_minutes_seconds(var_a + var_b)
'45:20'
或者,将timedelta
的str()
结果格式化为HH:MM:SS
>>> str(var_a + var_b)
'00:45:20'
而且可能也适合你的需求。请注意,对于超过一个小时的增量,str()
和to_minutes_seconds()
之间存在差异;前者显示小时、分钟和秒,后者仅显示分钟,其中分钟值可以超过60。表示超过24小时的增量将获得额外的天数前缀:
>>> str(timedelta(minutes=65, seconds=10))
'1:05:10'
>>> to_minutes_seconds(timedelta(minutes=65, seconds=10))
'65:10'
>>> str(timedelta(minutes=(60*24)+1, seconds=10))
'1 day, 0:01:10'
发布于 2013-05-17 22:42:12
我认为这些应该用对象来表示,而不是一行理解等等。因此,我建议使用如下所示的类:
class Time(object):
def __init__(self,minutes,seconds):
self.minutes = minutes
self.seconds = seconds
def __add__(self,other):
return Time(self.minutes+other.minutes,self.seconds+other.seconds)
def __str__(self):
return "{0}:{1}".format(self.minutes,self.seconds)
A = Time(22,11)
B = Time(22,22)
print(A+B)
产生
>>>
44:33
发布于 2013-05-17 22:44:32
你可以使用类似的函数
def add_with_column(*args):
res = (0,0)
for data in args:
nums = map(int, data.split(':'))
res = [i + j for i,j in zip(res, nums)]
return ':'.join([str(res[0] + res[1]/60), str(res[1] % 60)])
>>> add_with_column('22:50', '22:30')
'45:20'
https://stackoverflow.com/questions/16611665
复制相似问题