Работа с файлами. Множества. Словари
Работа с файлами
- Текстовые файлы
open(), read() / write() / close()
readlines(), он же сам файл, print(..., file=)
"b/t" — str или bytes
введение в with
вводить числа до 0, записывать в файл только положительные
- файлы с данными
если данные наши: сериализация/десериализация, pickle (json, xml, …)
dump[s]()/load[s]()
если данные готовы: struct
byte order
pack()/unpack()
Если в командной строке программы пять (с argv[0] — 6) параметров, то это:
- имя выходного файла
- имя,
- фамилия
- возраст (целое число
- средний балл (вещественное)
- .. тогда сериализовать эти данные в файл;
- а если параметр только один (argv[1]), это имя входного файла, десериализовать их оттуда и вывести
То же, что и выше, но с помощью struct
Словари и множества
- Задача хранения и индексирования
- сложных данных
- просто слишком больших данных
- +невосстановимое хеширование
- Свойства хеш-функции
- неоднозначность
- распределённость по ОЗ (на конкретных данных!)
- разброс для почти похожих
- невосстановимость объекта (сравнение без раскрытия)
- индексирование
- сортировка и поиск
a % b
int(sin(b)*1000)%100
hash(), какие объекты хешируются
- ...
если есть различные значения синуса, какой к ним хороший хеш?
идентификаторы
- Задание, в т. ч. циклический конструктор
- Операции над множествами, методы
- Типичное использование
каких букв не хватает
вводятся предложения, проверить, есть ли общее слово (регистр букв игнорировать)
- Задание, в т. ч. циклический конструктор
- Операции над словарями, методы
- Типичное использование:
- ...
- globals()/locals()
- именные параметры функции
- Словари и счётчики
ручная реализация счётчика
collections
тестирование хеш-функции: много входных данных и гистограмма
- Словари и счётчики
генератор файла с N случайными словами (N задаётся из командной строки), причём 1-е слово встречается ровно 1 раз, второе — 2 раза, …, N-е — N раз
подсчёт слов в файле, гистограмма вида
######## word1 ############################# word2 ################### word3 ...
- ..где максимальная длина "#######" — 50 символов
самое популярное слово длиной >3 в файле anna.txt