Необходимо написать функцию, которая будет принимать первым параметром список объектов
{
id: int,
phrase: str,
slots: List[str]
}
[
{"id": 1, "phrase": "Hello world!", "slots": []},
{"id": 2, "phrase": "I wanna {pizza}", "slots": ["pizza", "BBQ", "pasta"]},
{"id": 3, "phrase": "Give me your power", "slots": ["money", "gun"]},
]
и вторым параметром строку для поиска в объектах
- Длинна example_object > 0
- ID объектов > 0
- Длинна phrase <= 120
- Длинна массива slots <= 50
search_string: str
Например, I wanna pasta
Функция должна проверить наличие строки поиска в объекте с комбинациями и вернуть id
объекта в случае совпадения или 0
в случае отсутствия совпадений строки в объекте
В объекте в строке phrase
, при наличии {}
и строк в slots
необходимо сделать все возможные комбинации.
Например:
{"phrase": "I wanna {eat}", "slots": ["pizza", "BBQ", "pasta"]}
должен скомбинировать следующие варианты:
"I wanna eat"
"I wanna pizza"
"I wanna BBQ"
"I wanna pasta"
и сравнить их со строкой поиска.
Функцию необходимо реализовать без сторонних библиотек (только python stdlib)
- Рассмотреть вариант, что список объектов может быть с такими фразами:
{"phrase": "I wanna {eat} and {drink}", "slots": ["pizza", "BBQ", "pepsi", "tea"]}
- Реализовать неточный поиск (fuzzy search). Например:
'I wanna eat' и 'i wanna eat' как строки поиска. Функция должны вернуть один id для них.
def phrase_search(object_list: list, search_string: str) -> int:
...
# type your code here
if __name__ == "__main__":
"""
len(object) != 0
object["id"] > 0
0 <= len(object["phrase"]) <= 120
0 <= len(object["slots"]) <= 50
"""
object = [
{"id": 1, "phrase": "Hello world!", "slots": []},
{"id": 2, "phrase": "I wanna {pizza}", "slots": ["pizza", "BBQ", "pasta"]},
{"id": 3, "phrase": "Give me your power", "slots": ["money", "gun"]},
]
assert phrase_search(object, 'I wanna pasta') == 2
assert phrase_search(object, 'Give me your power') == 3
assert phrase_search(object, 'Hello world!') == 1
assert phrase_search(object, 'I wanna nothing') == 0
assert phrase_search(object, 'Hello again world!') == 0
assert phrase_search(object, 'I need your clothes, your boots & your motorcycle') == 0
Реализовать сервис, который позволит подписываться на изменения по биржевым котировкам. Сервис должен предоставлять HTTP API со следующими запросами:
Создание подписки на уведомления по тикеру:
email
- email для подписки на уведомленияticker
- код акции или инструментаmax_price
- если цена ticker поднимется выше этого значения, на email будет отправлено уведомлениеmin_price
- если цена ticker опустится ниже этого значения, на email будет отправлено уведомление
POST /subscription Content-Type: application/json { "ticker": "TSLA", "email": "[email protected]" "max_price": "270.5200", "min_price": "240.200", }
Удаление подписки на уведомления по тикеру:
при отсутствии в запросе параметра ticker
должны удаляться все подписки по заданному email
DELETE /[email protected]&ticker=TSLA
Должна быть предусмотрена возможность подписаться только на min_price
или только на max_price
или на min_price
и max_price
.
По одному email
можно подписаться максимум на пять тикеров.
- Для получения информации о котировках рекомендуется использовать API https://www.alphavantage.co
- Список тикеров можно посмотреть тут: https://finance.yahoo.com/trending-tickers
- Для реализации сервиса рекомендуется использовать Python 3
- Код проекта может быть выложен в открытом репозитории на github, bitbucket или gitlab, содержать файл requirements.txt со списком зависимостей и инструкцию по запуску.
- Задача: спроектировать алгоритм работы
- Результат: блок-схема
- Формат: файл *.jpg
- Инструмент визуализации: https://www.draw.io/
Описание предметной области:
Необходимо спроектировать алгоритм работы блока управления кофейного автомата
- Выдача сдачи: Да
- Кол-во напитков: 18
- Кол-во стаканов: 700
- Купюроприемник: Да
- Монетоприемник: Да
- Регулировка уровня сахара: Да
- Питание: 220 В
Алгоритм должен учитывать все возможные ситуации работы, как штатные, так и внештатные.
Примеры сценариев работы автомата
позитивный
: пользователь выбирает напиток, вносит оплату, выбирает уровень сахара, получает напиток, получает сдачупозитивный
: пользователь выбирает напиток, вносит оплату, нажимает кнопку "Отмена", получает возврат оплатынегативный
: пользователь выбирает напиток, автомат сообщает, что данный напиток недоступеннегативный
: автомат выводит на дисплей сообщение о том, что он не работает (закончилась сдача или напиток)