Финальный проект модуля
Сразу можете ознакомится с финальным проектом.
Если знаете как его делать - приступайте. Если нет - прочитайте и разберите объяснения ниже.
Требования к финальному заданию
Финальное задание: программа-шагомер для фитнес-трекера
Вам подвернулся подходящий случай применить полученные знания на практике.
Знаменитая фирма Unicorn разработала новый фитнес-трекер runaway, и вас пригласили написать программный модуль для этого гаджета — ведь за время обучения вы накопили достаточный опыт в работе с подобными устройствами, и у вас даже есть фрагменты готового кода.
Заказчик составил техническое задание, которому вы должны следовать для успешного выполнения проекта. В техническом задании есть шаблон, в котором указаны константы и функции. Вам предстоит написать тело для объявленных функций и определить места их вызова. Удачи!
Техническое задание
Программный модуль для обработки данных фитнес-трекера runaway фирмы Unicorn.
Входные данные
Модуль получает от микросхемы-контроллера пакеты данных в виде кортежей.
Пакеты передаются в программу в момент обращения к трекеру (при нажатии на кнопку).
Порядок значений в пакете данных:
(<time>, <steps>)<time>: время создания пакета; значение типаstr; формат:'часы:минуты:секунды'.<steps>: количество шагов, сделанных пользователем с момента последнего обращения; значение типаint.
💡 При передаче пакетов могут случаться сбои, это надо учесть в программе. При поступлении пакета нужно проверить его; передавать пакет на обработку можно только после проверки.
Возможные ошибки при получении пакетов:
- Пакет меньшей или большей длины.
- У одного или нескольких параметров в пакете пустое значение.
- Значение времени в переданном пакете меньше или равно предыдущему записанному значению (время считается в рамках одних суток).
Результат выполнения программы
- Полученные пакеты должны сохраняться в словаре
storage_data. Ключами для него будут значения времени, а значениями — количество шагов. - В терминал должно выводиться сообщение, например такое (в начеле и в конце сообщения должна выводиться пустая строка):
Время: 09:36:02. Количество шагов за сегодня: 15302. Дистанция составила 9.95 км. Вы сожгли 1512.00 ккал. Отличный результат! Цель достигнута. - Также должно выводиться мотивирующее сообщение. Его содержание должно зависеть от интенсивности тренировки:От 6.5 км и более: 'Отличный результат! Цель достигнута.'
От 3.9 км и более: 'Неплохо! День был продуктивный' От 2 км и более: 'Завтра наверстаем!' Менее 2 км: 'Лежать тоже полезно. Главное — участие, а не победа!' - Программа должна возвращать словарь
storage_data, чтобы можно было продолжить обработку данных в других программах.
💡Количество шагов, дистанция в километрах и число сожжённых калорий рассчитывается за период с начала текущих суток (с 0:00:00) до момента времени, полученного в новом пакете данных. На следующие сутки все данные обнуляются и расчёты начинаются заново, с нуля.
Точка входа в программу
Функция обработки пакетов
accept_package() — это точка входа в программу, функция, которая вызывается первой; на вход она принимает пакет с данными. Функция accept_package() должна вернуть словарь storage_data, в который добавлены данные из полученного пакета.Из этой функции по цепочке вызываются другие функции, каждая из которых отвечает за свою часть работы.
Сразу после старта должна выполниться функция
check_correct_data(), проверяющая корректность полученного пакета. Она может вернуть True или False, что повлияет на дальнейшее выполнение базовой функции.💡Вызываемые функции должны быть размещены в коде выше, чем их вызов: Python читает код сверху вниз; сначала он должен прочесть функцию, и лишь затем — вызов этой функции.
