Программный модуль по методологии ООП для расчёта и отображения информации о прошедшей тренировке по данным от блока датчиков.
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()
.
Моторин А.В.