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))
当我输入时间时,就像我输入t = time(0,0,90)一样。 如何获取返回0:1:30的代码?
我也将如何进行以下操作? 添加一个称为增量的方法。这将使当前时间增加一秒钟。确保检查所有边界条件。当时间23:59:59递增时,它应翻转到00:00:00。
答案 0 :(得分:2)
我会走完全不同的路线。如果有帮助,请在此处展示。
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
imo是最简单,最直接的方法。如果您有多个必须保持同步的值,我的建议是不要将它们分开存储:只需将它们一起存储在底层系统中,并在用户需要时将它们分开即可。
答案 1 :(得分:1)
当我输入时间时,就像我输入t = time(0,0,90)一样。如何获取返回0:1:30的代码?
只需将秒数移动到几分钟,将分钟数移动到小时,并根据需要进行缩放即可。开始于:
hh = 0
mm = 0
ss = 90
和执行此操作的代码相对简单:
while ss >= 60:
ss -= 60
mm += 1
while mm >= 60:
mm -= 60
hh = (hh + 1) % 24
请注意,这不是最有效的方法,尤其是当值可能很高时。如果可能的话,您最好选择以下方式:
mm += (ss // 60) ; ss = ss % 60
hh += (mm // 60) ; mm = mm % 60
hh = hh % 24
添加一个称为增量的方法。这将使当前时间增加一秒钟。确保检查所有边界条件。当时间23:59:59递增时,它应翻转到00:00:00。
遵循类似的模式(并假设您已经对其进行了固定以确保正确地固定值),这也相对容易。
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
请注意,我还没有将其集成到您的特定代码中,我更多地将Python当作伪代码语言(它擅长使用)。那是因为这是课堂活动,而且您自己动手做会学到更多(当然,一旦您知道如何操作)。
您应该使用我提供的算法并将其改编为您自己的代码。
答案 2 :(得分:0)
我建议您创建一种方法,以增加小时和秒,而增量方法仅调用add sec方法。在这些方法中,当它们达到各自的极限时会进行处理。
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
您可以自己运行此代码here