Python 如何将秒转换为分钟,将分钟转换为小时
当我输入时间时,比如当我输入t=time(0,0,90)时。 如何让代码返回0:1:30 我该如何做下面的工作呢? 添加一个名为increment的方法。这将使当前时间增加1秒。确保检查了所有边界条件。当时间增加到23:59:59时,它应该滚动到00:00:00 当我输入时间时,比如当我输入t=time(0,0,90)时。如何让代码返回0:1:30 这可以通过简单地将秒移动到分钟,将分钟移动到小时来完成,并根据需要进行缩放。首先:Python 如何将秒转换为分钟,将分钟转换为小时,python,class,Python,Class,当我输入时间时,比如当我输入t=time(0,0,90)时。 如何让代码返回0:1:30 我该如何做下面的工作呢? 添加一个名为increment的方法。这将使当前时间增加1秒。确保检查了所有边界条件。当时间增加到23:59:59时,它应该滚动到00:00:00 当我输入时间时,比如当我输入t=time(0,0,90)时。如何让代码返回0:1:30 这可以通过简单地将秒移动到分钟,将分钟移动到小时来完成,并根据需要进行缩放。首先: class time: def __init__(self,hr
class time:
def __init__(self,hrs,mins,secs):
self.hrs = hrs
self.mins= mins
self.secs = secs
def __str__(self):
return (str(self.hrs%24)+":"+str(self.mins)+":"+str(self.secs))
def __repr__(self):
return (str(self.hrs%24)+":"+str(self.mins)+":"+str(self.secs))
执行此操作的代码相对简单:
hh = 0
mm = 0
ss = 90
请注意,这不是最有效的方法,尤其是当值可能很高时。如果这是一种可能性,您最好选择以下方式:
while ss >= 60:
ss -= 60
mm += 1
while mm >= 60:
mm -= 60
hh = (hh + 1) % 24
添加一个名为increment的方法。这将使当前时间增加1秒。确保检查了所有边界条件。当时间增加到23:59:59时,它应该滚动到00:00:00
遵循类似的模式(并且假设您已经修复了它以确保值被正确钳制),这也是相对容易的
mm += (ss // 60) ; ss = ss % 60
hh += (mm // 60) ; mm = mm % 60
hh = hh % 24
请注意,我没有将其集成到您的特定代码中,我更多的是将Python视为一种伪代码语言(它擅长于此)。那是因为这是课堂作业,你自己做会学到更多(当然,一旦你知道怎么做)
您应该使用我提供的算法,并根据自己的代码对其进行调整。我建议您创建一个方法来添加小时分钟和秒,增量方法只调用添加秒方法。在他们达到各自极限时处理的方法中
ss = (ss + 1) % 60 # add second, wrapping if needed.
if ss == 0: # if second wraps, do same to minute.
mm = (mm + 1) % 60
if mm == 0: # if minute wraps, increment hour.
hh = (hh + 1) % 24
您可以自己运行此代码我会选择完全不同的路线。在这里展示,以防对您有所帮助
class time:
def __init__(self,hrs,mins,secs):
self.secs = secs % 60
self.mins = (mins + (secs // 60)) % 60
self.hrs = (hrs + (mins // 60)) % 24
def add_hour(self):
if self.hrs == 23:
self.hrs = 0
else:
self.hrs += 1
def add_min(self):
if self.mins == 59:
self.add_hour()
self.mins = 0
else:
self.mins += 1
def add_sec(self):
if self.secs == 59:
self.add_min()
self.secs = 0
else:
self.secs += 1
def increment(self):
self.add_sec()
def __str__(self):
return (f"{self.hrs}:{self.mins}:{self.secs}")
def __repr__(self):
return (f"{self.hrs}:{self.mins}:{self.secs}")
t = time(23,59,59)
print(t)
#23:59:59
t.increment()
print(t)
#0:0:0
t = time(0,0,90)
print(t)
#0:1:30
依我看,这是最简单、最直接的方法。如果有多个值必须保持同步,我的建议是不要将它们分开存储:只需将它们一起存储在基础系统中,并在用户需要时将它们分开。我喜欢你的想法,非常优雅。我只是基于OP的原始代码,做得很好,只是一个小小的挑剔。由于时间必须限制在一天之内,所以无论何时设置或更改时间(在
\uuuu init\uuuu
和increment
中),您都应该时间=时间%86400
。@paxdiablo哦,您是对的,我错过了那个要求!请务必注意,您的类名为time
,这将与内置模块冲突。我建议至少重命名为Time
class Time:
def __init__(self, hh, mm, ss):
self.time = hh*3600 + mm*60 + ss # Total seconds
@property
def hours(self):
return (self.time % 86400) // 3600
@property
def mins(self):
return (self.time % 3600) // 60
@property
def secs(self):
return self.time % 60
def increment(self):
self.time += 1