我在正确实施以下方面遇到问题:
删除
__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
时,它没有这样做。我假设是因为我没有正确地召唤它?
到目前为止,这是我的代码:
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,但这就是我被告知保留它的方式(我道歉)。
答案 0 :(得分:0)
主要需要进行6项更改:
您不需要在课堂上保持小时和分钟。你只维持秒。因此,请删除setHour
和setMinute
方法。
由于您不会维持小时和分钟,getHour
和getMinute
方法应该进行必要的计算。
def getHour(self):
return int(self.__second / 3600)
def getMinute(self):
return int(self.__second / 60) % 60
在init
函数中,对self.setSecond的调用不正确。它应该是:
def __init__(self, hour, minute, second):
if hour > 23 or hour < 0:
hour = 0
if minute > 60 or minute < 0:
minute = 0
if second > 60 or second < 0:
second = 0
self.setSecond((hour * 60 * 60) + (minute * 60 + second))
虽然您提到过,但您的getSecond()
方法却没有seconds % 60
。它应该是:
def getSecond(self):
return self.__second % 60
在方法def __str__
中,不是直接访问小时,分钟,秒,而是使用访问者方法:
def __str__(self):
if self.getHour() > 11:
return 'The Time is {}:{}:{} PM'.format(self.getHour(), self.getMinute(), self.getSecond())
else:
return 'The Time is {}:{}:{} AM'.format(self.getHour(), self.getMinute(), self.getSecond())
setSeconds
方法不应检查> 60
,因为现在您将在此处存储大量数据:
def setSecond(self, second):
self.__second = second
if self.__second < 0:
self.__second = 0