Untitled
unknown
python
2 years ago
3.3 kB
35
Indexable
import datetime as dt
FORMAT = '%H:%M:%S' # Запишите формат полученного времени.
WEIGHT = 75 # Вес.
HEIGHT = 175 # Рост.
K_1 = 0.035 # Коэффициент для подсчета калорий.
K_2 = 0.029 # Коэффициент для подсчета калорий.
STEP_M = 0.65 # Длина шага в метрах.
storage_data = {}
def check_correct_data(data):
if data is None:
return False
if len(data) != 2:
return False
if data[0] is None:
return False
if data[1] is None:
return False
return True
def check_correct_time(time):
if storage_data and time <= max(storage_data.keys()):
return False
return True
def get_step_day(steps):
count_steps = 0
if len(storage_data) != 0:
count_steps += sum(storage_data.values())
return count_steps + steps
def get_distance(steps):
dist_in_m = steps * STEP_M
dist_in_km = dist_in_m / 1000
return dist_in_km
def get_spent_calories(dist, current_time):
total_minutes = current_time.hour * 60 + current_time.minute
mean_speed = dist / (total_minutes / 60)
spent_calories = (0.035 * WEIGHT + (mean_speed ** 2 / HEIGHT) * 0.029 * WEIGHT) * total_minutes
return spent_calories
def get_achievement(dist):
"""Получить поздравления за пройденную дистанцию."""
if dist >= 6.5:
return 'Отличный результат! Цель достигнута.'
if dist >= 3.9:
return 'Неплохо! День был продуктивный'
if dist >= 2:
return 'Завтра наверстаем!'
return 'Лежать тоже полезно. Главное — участие, а не победа!'
def show_message(current_time, day_steps, distance, calories, achievment):
message = f'\nВремя: {current_time.time()}.\n' \
f'Количество шагов за сегодня: {day_steps}.\n' \
f'Дистанция составила {distance:.2f} км.\n' \
f'Вы сожгли {calories:.2f} ккал.\n' \
f'{achievment}\n'
print(message)
def accept_package(data):
if not check_correct_data(data): # Если функция проверки пакета вернет False
return 'Некорректный пакет'
pack_time = dt.datetime.strptime(data[0], FORMAT) # Преобразуйте строку с временем в объект типа time.
if not check_correct_time(pack_time):
return 'Некорректное значение времени'
day_steps = get_step_day(data[1])
dist = get_distance(day_steps)
spent_calories = get_spent_calories(dist, pack_time)
achievement = get_achievement(dist)
show_message(pack_time, day_steps, dist, spent_calories, achievement)
storage_data[pack_time] = data[1]
return storage_data
# Данные для самопроверки.Не удаляйте их.
package_0 = ('2:00:01', 505)
package_1 = (None, 3211)
package_2 = ('9:36:02', 15000)
package_3 = ('9:36:02', 9000)
package_4 = ('8:01:02', 7600)
accept_package(package_0)
accept_package(package_1)
accept_package(package_2)
accept_package(package_3)
accept_package(package_4)
Editor is loading...