Untitled
unknown
python
a year ago
3.3 kB
29
Indexable
Never
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)