/
Carton
/
python-course-tasks
Обзор
Документация
Войти
/
Carton
/
python-course-tasks
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
task_06_02_10/main.py
106 строк
3 KB
Yuri Petrov
+ перенос заданий в отдельный репозиторий
02 июл 2020, 02:05
02 июл 2020, 02:05
5312992
Код
Авторство
О чём код?
# Программирование на языке высокого уровня (Python). # https://www.yuripetrov.ru/edu/python # Задание task_06_02_10. # # Выполнил: Фамилия И.О. # Группа: !!! # E-mail: !!! import random import time def timeit(func, *args, **kw): """Выполнить функицю 'func' с параметрами '*args', '**kw' и вернуть время выполнения в мс.""" time_start = time.time() res = func(*args, **kw) time_end = time.time() return (time_end - time_start) * 1000.0, res def top3_1(db): """Вернуть список из ТОП-3 клиентов по сумме активов. Алгоритм: Сортировка (встроенный метод sort()) и возврат 3-х элементов. Сложность: !!!. Параметры: - db (list of dict): список клиентов. Результат: tuple of dict: 3 клиента с максимальной суммой активов.""" # Удалите комментарий и допишите код def top3_2(db): """Вернуть список из ТОП-3 клиентов по сумме активов. Алгоритм: Прямой перебор (1 проход в цикле). Сложность: !!!. Параметры: - db (list of dict): список клиентов. Результат: tuple of dict: 3 клиента с максимальной суммой активов.""" # Удалите комментарий и допишите код if __name__ == "__main__": print("Загрузка базы данных... ") GEN_LIMIT = 10000000 # Список клиентов db = [] for client_id, assets in enumerate( random.sample(range(0, 10 * GEN_LIMIT), GEN_LIMIT), start=1): db.append(dict(client_id=client_id, assets=assets)) print("Загружено записей: {:,}.\n\nПримеры:".format(GEN_LIMIT)) print("Первый элемент:", db[0]) print("Последний элемент:", db[-1]) print("\n") res1 = timeit(top3_1, db) res2 = timeit(top3_2, db) for i, (func_time, res) in enumerate((res1, res2), start=1): print("Способ №{}".format(i)) print("Время: {:.2f} мс.".format(func_time)) for j, client in enumerate(res, start=1): print("{}-е место: ID={client_id} Активы={assets:,} руб.". format(j, **client)) print() # ------------- # Пример вывода: # # Загрузка базы данных... # Загружено записей: 10,000,000. # # Примеры: # Первый элемент: {'client_id': 1, 'assets': 79149360} # Последний элемент: {'client_id': 10000000, 'assets': 92745004} # # # Способ №1 # Время: 16779.14 мс. # 1-е место: ID=1346588 Активы=99,999,995 руб. # 2-е место: ID=9924557 Активы=99,999,979 руб. # 3-е место: ID=2904705 Активы=99,999,967 руб. # # Способ №2 # Время: 4364.90 мс. # 1-е место: ID=1346588 Активы=99,999,995 руб. # 2-е место: ID=9924557 Активы=99,999,979 руб. # 3-е место: ID=2904705 Активы=99,999,967 руб.