Время выполнения
30-60 минут
Уровень сложности
Низкий/Средний
Цели
- улучшение навыков учащегося в создании классов с нуля;
- определение и использование переменных экземпляра;
- определение и использование методов.
Сценарий
Нам нужен класс, умеющий считать секунды. Легко? Это не так просто, как Вы думаете, поскольку у нас будут определенные требования.
Прочтите их внимательно, так как класс, который Вы пишете, будет использоваться для запуска ракет, выполняющих международные миссии на Марс. Это большая ответственность. Мы рассчитываем на Вас!
Ваш класс будет называться Timer
. Его конструктор принимает три аргумента, представляющих часы (значение из диапазона [0..23] - мы будем использовать военное время), минуты (из диапазона [0..59]) и секунды (из диапазона [0..59]).
Ноль - это значение по умолчанию для всех вышеперечисленных параметров. Нет необходимости выполнять какие-либо проверки.
Сам класс должен обеспечивать следующие возможности:
- объекты класса должны быть "печатаемыми", то есть они должны иметь возможность неявно преобразовывать себя в строки следующего вида: "чч:мм:сс" с добавлением ведущих нулей, когда любое из значений меньше 10;
- класс должен быть оснащен методами без параметров, называемыми
next_second()
иprevious_second()
, увеличивающие время, хранящееся внутри объектов, на +1/-1 секунды соответственно.
Используйте следующие подсказки:
- все свойства объекта должны быть закрытыми;
- рассмотрите возможность написания отдельной функции (не метода!) для форматирования строки времени.
Дополните шаблон, который мы предоставили в редакторе. Запустите свой код и проверьте, выглядит ли результат так же, как наш.
Ожидаемый вывод
23:59:59
00:00:00
23:59:59
Code
class Timer:def __init__( ??? ):
#
# Напишите здесь код.
#
def __str__(self):
#
# Напишите здесь код.
#
def next_second(self):
#
# Напишите здесь код.
#
def prev_second(self):
#
# Напишите здесь код.
#
timer = Timer(23, 59, 59)
print(timer)
timer.next_second()
print(timer)
timer.prev_second()
print(timer)