Skip to content

Instantly share code, notes, and snippets.

@qweeze

qweeze/README.md Secret

Last active December 26, 2021 11:32
Show Gist options
  • Save qweeze/c37cb3bce6ffeac72bb5710c1a2d23f6 to your computer and use it in GitHub Desktop.
Save qweeze/c37cb3bce6ffeac72bb5710c1a2d23f6 to your computer and use it in GitHub Desktop.
Тестовое задание для Python разработчика

Тестовое задание для Python разработчика

К нам обратился один известный банк с просьбой написать софт для своих банкоматов. Поскольку на дворе 2020 год, разумеется им нужен микросервис. Итак, сервис должен реализовывать HTTP API и поддерживать 2 операции:

  1. Внесение наличных - принять в банкомат несколько монет/купюр. Входные параметры:

    • currency (string): Код валюты
    • value (int): Номинал купюры
    • quantity (int): Количество купюр

    Пример запроса:

    POST /deposit
    
    {
        "currency": "RUB",
        "value": 100,
        "quantity": 10
    }

    Успешный ответ:

    {
        "success": true
    }
  2. Получение наличных - выдать из банкомата определенную сумму денег в определенной валюте. В ответе должен возвращаться набор купюр, которыми банкомат выдаст нужную сумму, т.е. их номиналы и количество. Входные параметры:

    • currency (string): Код валюты
    • amount (int): Сумма

    Пример запроса:

    POST /withdraw
    
    {
        "currency": "RUB",
        "amount": 350
    }

    Успешный ответ:

    {
        "success": true,
        "result": [
            {
                "value": 100,
                "quantity": 3
            },
            {
                "value": 50,
                "quantity": 1
            }
        ]
    }

Технические требования

  • Python 3
  • Любые фреймворки и библиотеки на выбор
  • Формат данных - json
  • Поддерживаемые валюты - RUB, USD, EUR
  • Банкомат обычный, сам деньги не печатает, может выдавать только то, что в него положили. Если выдать требуемую сумму нет возможности - в ответ должна возвращаться ошибка
  • Формат ошибок - на усмотрение разработчика
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment