/hw_python_oop

Фитнес трекер

Primary LanguagePython

Фитнес трекер

Описание

Программный модуль по методологии ООП для расчёта и отображения информации о прошедшей тренировке по данным от блока датчиков.

Технологии

Python3, pre-commit, poetry, flake8, black, isort

Как запустить проект:

Клонировать репозиторий и перейти в него в командной строке:

git clone git@github.com:ase77/hw_python_oop.git
cd hw_python_oop

Cоздать и активировать виртуальное окружение:

  • Если у вас Linux/MacOS

    python3 -m venv venv
    source venv/bin/activate
  • Если у вас Windows

    python -m venv venv
    source venv/Scripts/activate

Обновить систему управления пакетами pip:

python -m pip install --upgrade pip

Установить poetry и зависимости из файла pyproject.toml:

pip install poetry
poetry install

Включить pre-commit и активировать хуки:

pre-commit install

Описание проекта

Базовый класс

class Training

Свойства класса

  • action — основное считываемое действие во время тренировки (шаг — бег, ходьба; гребок — плавание);
  • duration — длительность тренировки;
  • weight — вес спортсмена;
  • M_IN_KM = 1000 — константа для перевода значений из метров в километры;
  • LEN_STEP — расстояние, которое спортсмен преодолевает за один шаг или гребок. Один шаг — это 0.65 метра, один гребок — 1.38 метра.

Методы класса

  • get_distance() — метод возвращает значение дистанции, преодолённой за тренировку.
# базовая формула расчёта
шаг * LEN_STEP / M_IN_KM
  • get_mean_speed() — метод возвращает значение средней скорости движения во время тренировки.
# базовая формула расчёта
дистанция / длительность
  • get_spent_calories() — метод возвращает число потраченных калорий.
  • show_training_info() — метод возвращает объект класса сообщения.

Классы-наследники

Класс беговой тренировки

class Running

Свойства класса

наследуются

Методы класса

переопределён метод:

  • get_spent_calories() — метод возвращает число потраченных калорий.
# формула расчёта
(18 * средняя_скорость20) * вес_спортсмена / M_IN_KM * время_тренировки_в_минутах

Класс спортивной ходьбы

class SportsWalking

Свойства класса

Добавляемые свойства:

  • height — рост

Методы класса

переопределён метод:

  • get_spent_calories() — метод возвращает число потраченных калорий.
# формула расчёта
(0.035 * вес + (скорость ** 2 // рост) * 0.029 * вес) * время_тренировки_в_минутах

Класс тренировки в бассейне

class Swimming

Свойства класса

Добавляемые свойства:

  • length_pool — длина бассейна;
  • count_pool — количество проплытых бассейнов.

Методы класса

переопределён метод:

  • get_mean_speed() — метод возвращает значение средней скорости движения во время тренировки.
# формула расчёта
длина_бассейна * count_pool / M_IN_KM / время_тренировки
  • get_spent_calories() — метод возвращает число потраченных калорий.
# формула расчёта
(скорость + 1.1) * 2 * вес

Класс информационного сообщения

class InfoMessage

Свойства класса

  • training_type — тип тренировки;
  • duration — длительность тренировки;
  • distance — дистанция, преодолённая за тренировку;
  • speed — средняя скорость движения;
  • calories — потраченные за время тренировки килокалории.

Методы класса

  • get_message() — метод возвращает строку сообщения.
# выводимое сообщение
# все значения типа float округляются до 3 знаков после запятой
'Тип тренировки: {training_type}; Длительность: {duration} ч.; Дистанция: {distance} км; Ср. скорость: {speed} км/ч; Потрачено ккал: {calories}'.

Функции модуля

def read_package()
  • Функция read_package() принимает на вход код тренировки и список её параметров.
  • Функция определяет тип тренировки и создаёт объект соответствующего класса, передав ему на вход параметры, полученные во втором аргументе. Этот объект функция возвращает.

def main(training)

Функция main() принимает на вход экземпляр класса Training.

– При выполнении функции main()для этого экземпляра вызывается метод show_training_info(); результат метода является объект класса InfoMessage, он сохраняется в переменную info. – Для объекта InfoMessage, сохранённого в переменной info, вызывается метод, который возвращает строку сообщения с данными о тренировке; эта строка передаётся в функцию print().

Автор проекта:

Моторин А.В.