简单的时钟在python中

时间:2017-12-08 09:01:35

标签: python

我想在python中编写一个简单的时钟:

UIViewController

但是当我现在想用以下代码检查它时,我在class Clock: def __init__(self): self._hours = 0 self._minutes = 0 def gethours(self): return self._hours def getminutes(self): return self._minutes def sethours(self, hours): self._hours = hours def setminutes(self,minutes): if self._minutes > 60: self._hours = self._hours + 1 self._minutes = 1 else: self._minutes = minutes def tic(self): if self._minutes > 58: self._hours = self._hours + 1 self._minutes = 1 else: self._minutes = self._minutes + 1 minutes = property(getminutes, setminutes) hours = property(gethours, sethours)

得到一个AssertionError
assert(c.hours == i and c.minutes == j)

1 个答案:

答案 0 :(得分:0)

这是一个固定的重写,使用相同的测试。 设置者负责正确设置小时和分钟的值(尽管小时'设置器无法正确添加超过一天的管理,但这很容易根据与分钟相同的模型添加)。

然后tic()只是添加一分钟的快捷方式。

注释掉print语句以删除所有小时:分钟。

注意:我已将Clock转换为“新样式”类对象,允许使用属性修饰符并使所有内容更具可读性(这对python3来说不是必需的,但是必须让相同的代码也能工作在python2)。

class Clock(object):
    def __init__(self):
        self._hours = 0
        self._minutes = 0

    @property
    def hours(self):
        return self._hours

    @property
    def minutes(self):
        return self._minutes

    @minutes.setter
    def minutes(self, value):
        if value >= 60:
            # Take care, if one adds more than one hour, to
            # take the extra hours into account too:
            self.hours += value // 60
        self._minutes = value % 60

    @hours.setter
    def hours(self, value):
        self._hours = value % 24

    def tic(self):
        self.minutes += 1


c = Clock()

assert(c.minutes == 0 and c.hours == 0)

for i in range(24):
    assert(c.hours == i)
    for j in range(60):
        assert(c.hours == i and c.minutes == j)
        c.tic()
        print('{}:{}'.format(c.hours, c.minutes))

assert(c.minutes == 0 and c.hours == 0)

摘录和输出结束:

12:57
12:58
12:59
13:0
13:1
13:2
13:3
.
.
.
23:46
23:47
23:48
23:49
23:50
23:51
23:52
23:53
23:54
23:55
23:56
23:57
23:58
23:59
0:0