如何在数秒至数分钟内将分钟数转换为小时

时间:2019-02-06 03:11:59

标签: python class

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。

3 个答案:

答案 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