我在正确实施以下方面遇到问题:
删除__hours和__minutes . 调整mutator和accessor方法的实现 . 例如,对于__init __(hr,min,sec),验证值,然后设置__seconds = hr * 60 * 60 min * 60 sec . 这会将时间存储为秒 . 调整所有方法以使用__seconds . getSecond()可以使用__seconds mod 60仅返回时间中的秒数 . 测试所有方法以确保它们仍然有效 . (mod是模数,除法后的余数 . )
我在我的代码中使用了这个 self.setSecond = (hour * 60 * 60) + (minute * 60 + second)
为了恰当地将小时,分钟和秒表示为几秒钟,我在实现程序的其余部分时遇到了问题 . 我不确定我是否应该打印几秒钟?此外,当我更改我的getSecond()函数以返回 % 60
时,它没有这样做 . 我'm assuming because I'米没有正确地打电话给它?
到目前为止,这是我的代码:
class Clock(object):
def __init__(self, hour, minute, second):
self.setHour(hour)
self.setMinute(minute)
self.setSecond = (hour * 60 * 60) + (minute * 60 + second)
def setHour(self, hour):
self.__hour = hour
if self.__hour > 23:
self.__hour = 0
elif self.__hour < 0:
self.__hour = 0
def getHour(self):
return self.__hour
def setMinute(self, minute):
self.__minute = minute
if self.__minute > 60:
self.__minute = 0
elif self.__minute < 0:
self.__minute = 0
def getMinute(self):
return self.__minute
def setSecond(self, second):
self.__second = second
if self.__second > 60:
self.__second = 0
elif self.__second < 0:
self.__second = 0
def getSecond(self):
return self.__second
def __str__(self):
if self.__hour > 11:
return 'The Time is {}:{}:{} PM'.format(self.__hour, self.__minute, self.__second)
else:
return 'The Time is {}:{}:{} AM'.format(self.__hour, self.__minute, self.setSecond)
stopwatch = Clock(3, 2, 1)
print(stopwatch)
注意:我知道这段代码不是非常pythonic,但这就是我被告知如何保留它(我道歉) .
1 回答
主要需要进行6项更改:
您不需要在课堂上保持小时和分钟 . 你只维持秒 . 因此,删除
setHour
和setMinute
方法 .因为您没有维护小时和分钟,
getHour
和getMinute
方法应该执行所需的计算 .init
函数中,对self.setSecond的调用不正确 . 它应该是:getSecond()
方法没有seconds % 60
. 它应该是:def __str__
中,不使用访问者方法而是直接访问小时,分钟,秒 .setSeconds
方法不应该检查> 60
,因为现在你将在这里存储一个大数字: