Различия между версиями 1 и 2
Версия 1 от 2017-07-21 18:08:45
Размер: 4271
Редактор: ArsenyMaslennikov
Комментарий:
Версия 2 от 2017-07-23 14:29:09
Размер: 4615
Редактор: ArsenyMaslennikov
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 10: Строка 10:
     {{{#!highlight python3
       # вводить целые числа до 0, записывать в файл только положительные

       f = open("data", "wt")
       n = int(input())
       while n:
           if (n > 0):
               print(n, file=f)
           n = int(input())
       f.close()
   }}}

Работа с файлами. Множества. Словари

Работа с файлами

  • Текстовые файлы
    • open(), read() / write() / close()

    • readlines(), он же сам файл, print(..., file=)

    • "b/t" — str или bytes

    • введение в with

  • {*} вводить числа до 0, записывать в файл только положительные

    •    1        # вводить целые числа до 0, записывать в файл только положительные
         2 
         3        f = open("data", "wt")
         4        n = int(input())
         5        while n:
         6            if (n > 0):
         7                print(n, file=f)
         8            n = int(input())
         9        f.close()
      
  • файлы с данными
    • если данные наши: сериализация/десериализация, pickle (json, xml, …)

      • dump[s]()/load[s]()

    • если данные готовы: struct

      • byte order :(

      • pack()/unpack()

  • {i} Если в командной строке программы пять (с argv[0] — 6) параметров, то это:

    1. имя выходного файла
    2. имя,
    3. фамилия
    4. возраст (целое число
    5. средний балл (вещественное)
      • .. тогда сериализовать эти данные в файл;
    6. а если параметр только один (argv[1]), это имя входного файла, десериализовать их оттуда и вывести
  • {i} То же, что и выше, но с помощью struct

Словари и множества

  • Задача хранения и индексирования
    • сложных данных
    • просто слишком больших данных
    • +невосстановимое хеширование
  • Свойства хеш-функции
    • неоднозначность
    • распределённость по ОЗ (на конкретных данных!)
      • разброс для почти похожих
    • невосстановимость объекта (сравнение без раскрытия)
    ⇒ Возможности
    • индексирование
    • сортировка и поиск
    Примеры
    • a % b

    • int(sin(b)*1000)%100

    • hash(), какие объекты хешируются

    • ...
    • {*} если есть различные значения синуса, какой к ним хороший хеш?

    • {*} идентификаторы

    Множество — просто хеш-таблица
    • Задание, в т. ч. циклический конструктор
    • Операции над множествами, методы
    • Типичное использование
    • {*} каких букв не хватает

    • {i} вводятся предложения, проверить, есть ли общее слово (регистр букв игнорировать)

    Словарь — множество с атрибутами, т. е. соответствие множества хешируемых ключей множеству произвольных объектов
    • Задание, в т. ч. циклический конструктор
    • Операции над словарями, методы
    • Типичное использование:
      • ...
      • globals()/locals()
      • именные параметры функции
    • {*}

      • Словари и счётчики
        • {*} ручная реализация счётчика

        • {*} collections

        • {*} тестирование хеш-функции: много входных данных и гистограмма

    • {i} генератор файла с N случайными словами (N задаётся из командной строки), причём 1-е слово встречается ровно 1 раз, второе — 2 раза, …, N-е — N раз

    • {i} подсчёт слов в файле, гистограмма вида

      •    ########                                  word1
           #############################             word2
           ###################                       word3
           ...
      • ..где максимальная длина "#######" — 50 символов
    • {i} самое популярное слово длиной >3 в файле anna.txt

Python/Summer2017/2017-07-10 (последним исправлял пользователь FrBrGeorge 2017-08-08 11:02:11)