我想在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)
assert(c.hours == i and c.minutes == j)
答案 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