Кэширование для ускорения вычислений

Контекст Вы разрабатываете программу для оптимизации вычислений чисел Фибоначчи. Числа Фибоначчи вычисляются рекурсивной функцией, каждое число равно сумме двух предыдущих чисел. Однако вы заметили, что при больших значениях чисел Фибоначчи вычисления занимают значительное время, так как многие значения вычисляются повторно. Вам поручено создать декоратор, который кэширует результаты вызова функции и позволяет избежать повторных вычислений для одних и тех же аргументов. Задача Создайте … Читать далее

Счётчик

Что нужно сделать Реализуйте декоратор counter, считающий и выводящий количество вызовов декорируемой функции. Для решения задачи нельзя использовать операторы global и nonlocal (об этом мы ещё расскажем). Что оценивается

Логирование

Что нужно сделать Реализуйте декоратор logging, который будет отвечать за логирование функций. На экран выводится название функции и её документация. Если во время выполнения декорируемой функции возникла ошибка, то в файл function_errors.log записываются названия функции и ошибки. Также постарайтесь сделать так, чтобы программа не завершалась после обнаружения первой же ошибки, а обрабатывала все декорируемые функции и сразу записывала все ошибки в файл. Дополнительно: запишите дату … Читать далее

Замедление кода

Что нужно сделать В программировании иногда возникает ситуация, когда работу функции нужно замедлить. Типичный пример — функция, которая постоянно проверяет, изменились ли данные на веб-странице или её код. Реализуйте декоратор, который перед выполнением декорируемой функции ждёт несколько секунд. Что оценивается

Как дела?

Что нужно сделать Ваня что-то совсем заскучал на работе и решил побаловаться с кодом проекта. Он написал надоедливый декоратор, который при вызове декорируемой функции спрашивает у пользователя «Как дела?», вне зависимости от ответа отвечает что-то вроде «А у меня не очень!» и только потом запускает саму функцию. Правда, после такой выходки его чуть не уволили с работы. Реализуйте такой же декоратор и проверьте … Читать далее

Обработка логов

Контекст Вы работаете в большой компании, которая обслуживает сложную систему торговли. Каждый день генерируется огромное количество лог-файлов, содержащих информацию о торговых операциях. Вам поставлена задача разработать программу, которая будет автоматически анализировать эти лог-файлы и находить строки с сообщениями об ошибках (ERROR). Это поможет вам быстро отслеживать проблемы в торговой системе и эффективно на них реагировать. Задача Напишите программу, которая считывает строки из файла … Читать далее

Односвязный список

Что нужно сделать Мы продолжаем тему структур данных и алгоритмов. И в этот раз вам нужно реализовать односвязный список. Связный список — это структура данных, которая состоит из элементов, называющихся узлами. В узлах хранятся данные, а между собой узлы соединены связями. Связь — это ссылка на следующий или предыдущий элемент списка. В односвязном списке связь — это ссылка только на следующий элемент, то есть в нём можно передвигаться … Читать далее

Количество строк

Что нужно сделать Реализуйте функцию-генератор, которая берёт все питоновские файлы в директории и вычисляет количество строк в каждом файле, игнорируя пустые строки и строки комментариев. По итогу функция-генератор должна с помощью yield каждый раз возвращать количество строк в очередном файле. Что оценивается

Пути файлов

Что нужно сделать Реализуйте функцию gen_files_path, которая рекурсивно проходит по всем каталогам указанной директории (по умолчанию — корневой диск), находит указанный пользователем каталог и генерирует пути всех встреченных файлов. Подсказка: Существует функция, которая может получать все имена файлов в дереве каталогов. Попробуйте найти ее самостоятельно. Что оценивается