Финальный проект модуля

Сразу можете ознакомится с финальным проектом.
Если знаете как его делать - приступайте. Если нет - прочитайте и разберите объяснения ниже.

Требования к финальному заданию

Финальное задание: программа-шагомер для фитнес-трекера

Вам подвернулся подходящий случай применить полученные знания на практике.
Знаменитая фирма Unicorn разработала новый фитнес-трекер runaway, и вас пригласили написать программный модуль для этого гаджета — ведь за время обучения вы накопили достаточный опыт в работе с подобными устройствами, и у вас даже есть фрагменты готового кода.
Заказчик составил техническое задание, которому вы должны следовать для успешного выполнения проекта. В техническом задании есть шаблон, в котором указаны константы и функции. Вам предстоит написать тело для объявленных функций и определить места их вызова. Удачи!

Техническое задание

Программный модуль для обработки данных фитнес-трекера runaway фирмы Unicorn.

Входные данные

Модуль получает от микросхемы-контроллера пакеты данных в виде кортежей.
Пакеты передаются в программу в момент обращения к трекеру (при нажатии на кнопку).
Порядок значений в пакете данных:
(<time>, <steps>)
  • <time>: время создания пакета; значение типа str; формат: 'часы:минуты:секунды'.
  • <steps>: количество шагов, сделанных пользователем с момента последнего обращения; значение типа int.
💡 При передаче пакетов могут случаться сбои, это надо учесть в программе. При поступлении пакета нужно проверить его; передавать пакет на обработку можно только после проверки.
Возможные ошибки при получении пакетов:
  1. Пакет меньшей или большей длины.
  2. У одного или нескольких параметров в пакете пустое значение.
  3. Значение времени в переданном пакете меньше или равно предыдущему записанному значению (время считается в рамках одних суток).

Результат выполнения программы

  1. Полученные пакеты должны сохраняться в словаре storage_data. Ключами для него будут значения времени, а значениями — количество шагов.
  2. В терминал должно выводиться сообщение, например такое (в начеле и в конце сообщения должна выводиться пустая строка):

     Время: 09:36:02.
     Количество шагов за сегодня: 15302.
     Дистанция составила 9.95 км.
     Вы сожгли 1512.00 ккал.
     Отличный результат! Цель достигнута.
     
      
  3. Также должно выводиться мотивирующее сообщение. Его содержание должно зависеть от интенсивности тренировки:
     От 6.5 км и более: 'Отличный результат! Цель достигнута.'
     От 3.9 км и более: 'Неплохо! День был продуктивный'
     От 2 км и более: 'Завтра наверстаем!'
     Менее 2 км: 'Лежать тоже полезно. Главное — участие, а не победа!'
  4. Программа должна возвращать словарь storage_data, чтобы можно было продолжить обработку данных в других программах.
💡Количество шагов, дистанция в километрах и число сожжённых калорий рассчитывается за период с начала текущих суток (с 0:00:00) до момента времени, полученного в новом пакете данных. На следующие сутки все данные обнуляются и расчёты начинаются заново, с нуля.

Точка входа в программу

Функция обработки пакетов accept_package() — это точка входа в программу, функция, которая вызывается первой; на вход она принимает пакет с данными. Функция accept_package() должна вернуть словарь storage_data, в который добавлены данные из полученного пакета.
Из этой функции по цепочке вызываются другие функции, каждая из которых отвечает за свою часть работы.
Сразу после старта должна выполниться функция check_correct_data(), проверяющая корректность полученного пакета. Она может вернуть True или False, что повлияет на дальнейшее выполнение базовой функции.

💡Вызываемые функции должны быть размещены в коде выше, чем их вызов: Python читает код сверху вниз; сначала он должен прочесть функцию, и лишь затем — вызов этой функции.