README
Существуют сервисы бронирования отелей, такие как Book-King, Airdnb, Kostrovok. Каждый из них имеет какую-то комиссию и политику ценообразования. В течение этой задачи нам предстоит реализовать API, работающее с этими сервисами и поиск самого выгодного предложения из них. Наш сервис должен показывать честную цену, с учетом всех комиссий и преобразований. Валюта отображения – рубли.
Политика ценообразования для сервисов:
Все совпадения случайны
• Kostrovok: цену нужно увеличивать на налог 12%, платится за каждое бронирование
• Book-King: цену нужно преобразовывать из долларов в рубли по курсу 1:75
• Airdnb: никаких изменений, показывают конечную и удобную цену для нас
Описание отеля в каждом сервисе выглядит одинаково:
cost будет разный в зависимости от сервиса и его политики ценообразования# именно это число нужно "нормализовывать" для сравненияhotel = {'name': '$phpInn', 'cost': 600}
src/gateway.py
Реализуйте функцию find_all_matching(), обрабатывающую данные от разных сервисов бронирования. Она должна устанавливать для каждого цену, с учётом коэффициента этого сервиса. Функция возвращает cписок отелей и сервисов, попавших в условие. Данные для обработки поступают уже распарсенным JSON в виде словаря. Содержимое JSON можете посмотреть в tests/data.json
from gateway import find_all_matching # Цены на отели возвращаются уже в нормализованном виде# возвращается массив отелей объединенных с именем сервиса из которого они извлекаютсяhotel_infos = find_all_matching()# [ # {"hotel": {"cost": 224, "name": 'JSInn'}, "service": 'kostrovok'}, # {"hotel": {"cost": 500, "name": '$phpInn'}, "service": 'book-king'}# ]
Функция поддерживает фильтрацию по минимальной и максимальной цене:
По умолчанию min и max не заданы, но их можно указатьfind_all_matching({'min': 200, 'max': 300}) # Можно указывать только один предикатfind_all_matching({'max': 500})find_all_matching({'min': 100})
src/solution.py
Реализуйте логику функции find_the_cheapest_service(), работающей с find_all_matching() таким образом, чтобы она принимала от пользователя диапазон цен, обращалась к сервису и выбирала из него наиболее выгодное предложение:
from solution import find_the_cheapest_service find_the_cheapest_service({'min': 200, 'max': 300})
Подсказки
• Для границ по умолчанию минимальной и максимальной цены используйте -float('inf') и float('inf')
• Изучите входные данные в tests/data.json