Git Product home page Git Product logo

practice's Introduction

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})

{'hotel': {'cost': 224, 'name':'JSInn'}, 'service': 'kostrovok'}

Подсказки

• Для границ по умолчанию минимальной и максимальной цены используйте -float('inf') и float('inf')

• Изучите входные данные в tests/data.json

practice's People

Contributors

dreu007 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.