/
tosmi
/
practice
Обзор
Документация
Войти
/
tosmi
/
practice
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main.py
48 строк
2 KB
Тихон Щербинин
ФИНАЛЬНЫЙ КОММИТ - ГОТОВАЯ РАБОТА
25 май 2026, 20:14
25 май 2026, 20:14
e3b80c4
Код
Авторство
О чём код?
""" Модуль расчёта баллов для системы цифровой детоксикации. Реализация пункта 2.2: технология начисления баллов с нуля. """ def calculate_points(hours: float) -> int: """ Рассчитывает количество баллов за указанное время хранения телефона. :param hours: Время в часах (может быть дробным) :return: Количество начисленных баллов """ if hours < 0: raise ValueError("Время не может быть отрицательным") # Базовая ставка: 1 час = 10 баллов base_points = hours * 10 # Модификация (творческая часть): бонус за длительные сессии # Если телефон в станции более 3 часов, каждый дополнительный час стоит 15 баллов if hours > 3: bonus = (hours - 3) * 5 return int(base_points + bonus) return int(base_points) def calculate_hours(target_points: int) -> float: """ Рассчитывает необходимое время для получения целевого количества баллов. :param target_points: Желаемое количество баллов :return: Необходимое время в часах """ if target_points < 0: raise ValueError("Количество баллов не может быть отрицательным") # Обратный расчёт с учётом прогрессивной шкалы if target_points <= 30: return target_points / 10 else: # points = 30 + (hours - 3) * 15 return (target_points - 30) / 15 + 3 if __name__ == "__main__": # Тестовый запуск print(f"2 часа -> {calculate_points(2)} баллов") print(f"4 часа -> {calculate_points(4)} баллов") print(f"Для 50 баллов нужно: {calculate_hours(50):.2f} ч.")