Документ взят из кэша поисковой машины. Адрес оригинального документа : http://uneex.mithril.cs.msu.su/LecturesVMSH/2012-02-01
Дата изменения: Unknown
Дата индексирования: Sun Apr 10 02:50:21 2016
Кодировка: UTF-8
LecturesVMSH/2012-02-01 - UNИX

Модули `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 14:26:20)