Модули `time` и `pickle`, множества

Довольно мелкие темы, попавшиеся под руку при решении домашних заданий.

Домашнее задание

  1. {i} Прочитать в учебнике про Pickle и Наборы (множества) в учебнике; про модуль time в документации

  2. «Сортировка магнитных лент». Дан файл («магнитная лента»), содержащий строки, одновременно не умещающиеся в памяти. Требуется отсортировать этот файл построчно (записать отсортированные данные обратно на эту ленту). Для сортировки разрешается открывать небольшое число дополнительных файлов произвольного размера (использовать небольшое число дополнительных «лент»).

    • Предлагается использовать pickle для хранения в одном файле строк и не-строк.

    • Решение: sort_tape.py

  3. Измеритель скорости. С помощью time.time() замерить, сколько операций random.shuffle() выполняет компьютер за 5 секунд

    • Написать собственную процедуру shuffle(). Насколько она медленнее?

    • Решение с двумя всё более низкоуровневыми функциями (каждая медленнее предыдущей!): shufflemeter.py

  4. Записная книжка. В списке хранятся различные объекты Python, которые можно в него добавлять с клавиатуры (используется input()). Напишите программу, которая сохраняет ввод в файл, если видит специальную завершающую последовательность, и восстанавливает данные оттуда при последующем запуске.

    • Подсказка: input() — очень опасная функция, она выполняет eval() от введённой строки, следовательно, если вы определите функцию Quit() в программе, а потом введёте Quit() со стандартного ввода, то input() эту функцию выполнит!

    • Ввести ещё несколько функций, например, List(начало, конец) для просмотра пронумерованного списка (если параметры не указаны — всего) и Delete(начало, конец)

    • notepickle.py

Условные обозначения


CategoryClass CategoryVmsh

LecturesVMSH/2012-02-01 (последним исправлял пользователь FrBrGeorge 2012-02-08 17:26:20)