102 lines
2.7 KiB
Python
102 lines
2.7 KiB
Python
|
class MicrowaveBase:
|
||
|
def __init__(self):
|
||
|
self.time = "00:00"
|
||
|
|
||
|
def set_time(self, time: str):
|
||
|
self.time = time
|
||
|
|
||
|
def add_time(self, time: str):
|
||
|
minute, second = self.time.split(":")
|
||
|
minute = int(minute)
|
||
|
second = int(second)
|
||
|
number_to_add = int(time[0:-1])
|
||
|
unit_to_add = time[-1:]
|
||
|
if unit_to_add == "s":
|
||
|
second += number_to_add
|
||
|
while second >= 60:
|
||
|
minute += 1
|
||
|
second = second - 60
|
||
|
else:
|
||
|
minute += number_to_add
|
||
|
if minute > 90:
|
||
|
self.time = "90:00"
|
||
|
else:
|
||
|
self.time = "{}:{}".format(str(minute).rjust(2, "0"), str(second).rjust(2, "0"))
|
||
|
|
||
|
def del_time(self, time: str):
|
||
|
minute, second = self.time.split(":")
|
||
|
minute = int(minute)
|
||
|
second = int(second)
|
||
|
number_to_add = int(time[0:-1])
|
||
|
unit_to_add = time[-1:]
|
||
|
if unit_to_add == "s":
|
||
|
second -= number_to_add
|
||
|
while second <= 0:
|
||
|
minute -= 1
|
||
|
second *= -1
|
||
|
else:
|
||
|
minute -= number_to_add
|
||
|
if minute < 0:
|
||
|
self.time = "00:00"
|
||
|
else:
|
||
|
self.time = "{}:{}".format(str(minute).rjust(2, "0"), str(second).rjust(2, "0"))
|
||
|
|
||
|
|
||
|
|
||
|
class Microwave1(MicrowaveBase):
|
||
|
def show_time(self) -> str:
|
||
|
print("_"+self.time[1:])
|
||
|
return "_"+self.time[1:]
|
||
|
|
||
|
|
||
|
class Microwave2(MicrowaveBase):
|
||
|
def show_time(self):
|
||
|
print(self.time[0:-1] + "_")
|
||
|
return self.time[0:-1] + "_"
|
||
|
|
||
|
|
||
|
class Microwave3(MicrowaveBase):
|
||
|
def show_time(self):
|
||
|
print(self.time)
|
||
|
return self.time
|
||
|
|
||
|
|
||
|
class RemoteControl:
|
||
|
def __init__(self, microwave: MicrowaveBase):
|
||
|
self.microwave = microwave
|
||
|
|
||
|
def set_time(self, time: str):
|
||
|
self.microwave.set_time(time)
|
||
|
|
||
|
def add_time(self, time: str):
|
||
|
self.microwave.add_time(time)
|
||
|
|
||
|
def del_time(self, time: str):
|
||
|
self.microwave.del_time(time)
|
||
|
|
||
|
def show_time(self):
|
||
|
return self.microwave.show_time()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
# These "asserts" using only for self-checking and not necessary for auto-testing
|
||
|
|
||
|
microwave_1 = Microwave1()
|
||
|
microwave_2 = Microwave2()
|
||
|
microwave_3 = Microwave3()
|
||
|
|
||
|
remote_control_1 = RemoteControl(microwave_1)
|
||
|
remote_control_1.set_time("01:00")
|
||
|
|
||
|
remote_control_2 = RemoteControl(microwave_2)
|
||
|
remote_control_2.add_time("90s")
|
||
|
|
||
|
remote_control_3 = RemoteControl(microwave_3)
|
||
|
remote_control_3.del_time("300s")
|
||
|
remote_control_3.add_time("100s")
|
||
|
|
||
|
assert remote_control_1.show_time() == "_1:00"
|
||
|
assert remote_control_2.show_time() == "01:3_"
|
||
|
assert remote_control_3.show_time() == "01:40"
|
||
|
print("Coding complete? Let's try tests!")
|