Различия между версиями 4 и 5
Версия 4 от 2012-02-08 12:24:18
Размер: 5585
Редактор: FrBrGeorge
Комментарий:
Версия 5 от 2012-02-08 12:25:29
Размер: 5609
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 20: Строка 20:
  1. Записная книжка. В списке хранятся различные объекты Python, которые можно в него добавлять (используется `input()`). Напишите программу, которая сохраняет ввод в файл, если видит специальную завершающую последовательность, и восстанавливает данные оттуда при последующем запуске.   1. Записная книжка. В списке хранятся различные объекты Python, которые можно в него добавлять с клавиатуры (используется `input()`). Напишите программу, которая сохраняет ввод в файл, если видит специальную завершающую последовательность, и восстанавливает данные оттуда при последующем запуске.

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

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

  • Множества (set(последовательность)). Операции &, |, ^, Использование множеств для хранения уникальных элементов.

  • Модуль time. Функции time.time(), time.strftime(). Запуск и останов вычислений по времени.

  • Модуль pickle. Функции pickle.dump(объект,файл) и pickle.load(файл). Применение 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(начало, конец)

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

  • {o} — тема по Linux

  • <!> ­— необязательная тема

  • {i} — теоретическое задание

  • {*} — тема для самостоятельного изучения


CategoryClass CategoryVmsh

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