Python在“:”的任一侧添加数字,即22:11+22:22=44:33

Python在“:”的任一侧添加数字,即22:11+22:22=44:33,python,string,time,int,Python,String,Time,Int,左边22的数字是分钟 右边的数字是秒 我想把这两个数字加起来 22:11 + 22:22 = 44:33 varible_A = ('22:11') varible_B = ('22:11') 这是一个奖金,但真的会帮助我* 有没有可能像对待时间一样对待数字 total = 44:22 我想订45:20 而不是 varible_A = ('22:50') varible_B = ('22:30') 大概是这样的: 44:80 def represent_time(minutes,

左边22的数字是分钟 右边的数字是秒

我想把这两个数字加起来

22:11  +  22:22  =  44:33
varible_A = ('22:11')
varible_B = ('22:11')
这是一个奖金,但真的会帮助我*

有没有可能像对待时间一样对待数字

total = 44:22
我想订45:20

而不是

varible_A = ('22:50')
varible_B = ('22:30')
大概是这样的:

44:80
def represent_time(minutes, seconds):
    """Specifies two-character-wide seconds with leading 0."""
    return "{0}:{1:02d}".format(minutes, seconds)
大概是这样的:

44:80
def represent_time(minutes, seconds):
    """Specifies two-character-wide seconds with leading 0."""
    return "{0}:{1:02d}".format(minutes, seconds)
用于为持续时间建模:

>>> def add_time(t1,t2):
    h1,s1 = map(int,t1.split(":"))
    h2,s2 = map(int,t2.split(":"))
    q,r = divmod(s1+s2, 60)
    return "{0}:{1:02d}".format( h1+h2+q, r)
... 
>>> add_time('22:30','22:50')
'45:20'
>>> add_time('22:30','22:30')
'45:00'
然后,可以将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的str结果格式为HH:MM:SS:

也可能适合你的需要。请注意,对于呈现时间超过一小时的增量,str和to_分_秒之间存在差异;前者显示小时、分钟和秒,后者仅显示分钟,其中分钟值可以超过60。表示超过24小时的增量将获得额外的天数前缀:

>>> str(var_a + var_b)
'00:45:20'
用于为持续时间建模:

>>> def add_time(t1,t2):
    h1,s1 = map(int,t1.split(":"))
    h2,s2 = map(int,t2.split(":"))
    q,r = divmod(s1+s2, 60)
    return "{0}:{1:02d}".format( h1+h2+q, r)
... 
>>> add_time('22:30','22:50')
'45:20'
>>> add_time('22:30','22:30')
'45:00'
然后,可以将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的str结果格式为HH:MM:SS:

也可能适合你的需要。请注意,对于呈现时间超过一小时的增量,str和to_分_秒之间存在差异;前者显示小时、分钟和秒,后者仅显示分钟,其中分钟值可以超过60。表示超过24小时的增量将获得额外的天数前缀:

>>> str(var_a + var_b)
'00:45:20'

我认为这些应该用对象来表示,而不是一行理解等等。。。因此,我建议使用如下类:

>>> 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'
产生

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)

我认为这些应该用对象来表示,而不是一行理解等等。。。因此,我建议使用如下类:

>>> 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'
产生

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

您可以使用类似的函数

>>> 
44:33

在不进口任何外部机械的情况下,一种简单的方法是:

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'

当然,您可以始终从datetime导入,这对于实际应用可能更好,但如果您想自己实现时间操作,这就是您可以做到的方法。

不导入任何外部机器的简单方法是:

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'
def add(time1,time2):
    t1 = map(int,time1.split(':')) # t1[0] is minutes, t1[1] is seconds
    t2 = map(int,time2.split(':')) # map will apply int() to both elements of the array
    m = t1[0]+t2[0]+(t1[1]+t2[1])/60 # New minutes; recall that 70/60=1 for integer division
    s = (t1[1]+t2[1]) % 60 #new seconds
    return str(m)+":"+str(s)
add('22:30','22:50') # prints '45:20'

当然,您可以始终从datetime导入,这对于实际应用程序来说可能更好,但如果您希望自己实现时间操作,这就是您可以实现的方式。

您希望将时间拆分为它们的组件

def add(time1,time2):
    t1 = map(int,time1.split(':')) # t1[0] is minutes, t1[1] is seconds
    t2 = map(int,time2.split(':')) # map will apply int() to both elements of the array
    m = t1[0]+t2[0]+(t1[1]+t2[1])/60 # New minutes; recall that 70/60=1 for integer division
    s = (t1[1]+t2[1]) % 60 #new seconds
    return str(m)+":"+str(s)
add('22:30','22:50') # prints '45:20'
a = '22:50'
b = '22:30'

def add_time(a, b):
    a = map(int, a.split(':'))
    b = map(int, b.split(':'))
    a[1] += b[1]
    a[0] += b[0] + a[1]//60
    a[1] %= 60
    return '{}:{}'.format(*a)

print a, b, add_time(a,b)
并添加它们

def split_time(time):
    return time.split(':')
并在适当的情况下进行模数运算以携带分钟

def add_times(time1, time2):
    minutes = time1[0] + time2[0]
    seconds = time1[1] + time2[1]
    return minutes, seconds
并创建结果的表示形式

def carry_the_minute(minutes, seconds):
    minutes += seconds / 60
    seconds %= 60
    return minutes, seconds
把所有这些放在一起会像这样:

44:80
def represent_time(minutes, seconds):
    """Specifies two-character-wide seconds with leading 0."""
    return "{0}:{1:02d}".format(minutes, seconds)

您希望将时间拆分为其组件

a = '22:50'
b = '22:30'

def add_time(a, b):
    a = map(int, a.split(':'))
    b = map(int, b.split(':'))
    a[1] += b[1]
    a[0] += b[0] + a[1]//60
    a[1] %= 60
    return '{}:{}'.format(*a)

print a, b, add_time(a,b)
并添加它们

def split_time(time):
    return time.split(':')
并在适当的情况下进行模数运算以携带分钟

def add_times(time1, time2):
    minutes = time1[0] + time2[0]
    seconds = time1[1] + time2[1]
    return minutes, seconds
并创建结果的表示形式

def carry_the_minute(minutes, seconds):
    minutes += seconds / 60
    seconds %= 60
    return minutes, seconds
把所有这些放在一起会像这样:

44:80
def represent_time(minutes, seconds):
    """Specifies two-character-wide seconds with leading 0."""
    return "{0}:{1:02d}".format(minutes, seconds)


请发布您迄今为止试图解决此问题的任何代码,以及您遇到的问题。请发布您迄今为止试图解决此问题的任何代码,以及您遇到的问题。在python 2中使用返回“{.0f}:{.0f}”。格式为*divmoddelta.total_seconds,60。7@TyrantWave:的确,这是更好的选择。在大多数情况下,只要strdelta就足够了。@thg435:在这种情况下,它总是包括小时数。如果只想显示分钟计数,那么这将不起作用。扩展以提供一些示例并涵盖差异。@MartijnPieters:我也不清楚OP在45:00+20:00时期望得到什么结果。使用返回“{.0f}:{.0f}”。格式*divmoddelta.total_seconds,python 2中为60。7@TyrantWave:的确,这是更好的选择。在大多数情况下,只要strdelta就足够了。@thg435:在这种情况下,它总是包括小时数。如果只想显示分钟计数,那么这将不起作用。我不清楚OP在45:00+20:00时的预期结果。现在加上22:50和22:30:-@MartijnPieters我明白你的意思,但OP似乎并不反对这种行为。现在加上22:50和22:30:-@MartijnPieters我明白你的意思,但是OP似乎并不反对这样的行为。谢谢,如果这些数字像variable_list=['21:12','34:32']那样存储会怎么样?我不知道会发生什么。可能只是将“:”替换为“.”不,我的意思是,如果我有一个时间列表,我需要将它们全部添加到一起。添加带有“_”列*timelist的“_”,或者你可以检查args[0]是否可写,如果是hanks,则为其运行cycle,如果数字存储为variable_list=['21:12','34:32',则不知道预期会发生什么。可能只是将“:”替换为“.”不,我的意思是,如果我有一个时间列表,我需要将它们全部添加到一起添加带有列*timelist的列,或者您可以检查args[0]是否可编辑,如果可以,则为其运行cycle