Kodomo

Пользователь

Вариант 1

  1. (3 балла) Напишите функцию trim_lines, которая получает на вход список строк, удаляет все невидимые символы (пробелы, табуляции и т.п.) в конце каждой строки, и возвращает получившийся список строк. Должен работать дословно такой пример:

    •    1 >>> x = trim_lines(["hello \t", "world\n"])
         2 print x, len(x)
         3 ['hello', 'world'] 2
      
  2. (3 балла) Напишите функцию enumerate, которая получает на вход список строк, добавляет в начало каждой её номер, и возвращает получившийся список строк. Должен работать дословно такой пример:

    •    1 >>> x = enumerate(["hello", "world"])
         2 >>> print x
         3 ['1. hello', '2. world']
      
  3. (4 балла) Напишите программу, которая открывает файл "words.txt", удаляет в его содержимом невидимые символы в концах строк, нумерует строки в обратном порядке, и записывает получившиеся строки в "clean.txt". Если в исходном файле было две строки:

    • hello
      world
      То в выходном должно получиться:
      2. hello
      1. world

Вариант 2

  1. (3 балла) Напишите функцию filter_letters(text), которая получает на вход строку, и возвращает строку, содержащую только буквы из этого текста. Должен работать дословно такой пример:

    •    1 >>> filter_letters(u"привет, world!\n")
         2 u'приветworld'
      
  2. (3 балла) Напишите функцию letter_counts(text), которая получает на вход строку, и возвращает словарь, в котором ключ – буква, значение – сколько раз эта буква встретилась в тексте. Регистр букв при этом не учитывается. Должен работать дословно такой пример:

    •    1 >>> x = letter_counts(u"textкоторая")
         2 >>> for letter in x: print letter, x[letter]
         3 ...
         4 р 1
         5 т 1
         6 e 1
         7 я 1
         8 а 1
         9 t 2
        10 x 1
        11 к 1
        12 о 2
      
  3. (4 балла) Напишите программу, которая открывает файл "words.txt", считает количества вхождений разных букв в нём, переводит количества в частоты, и печатает на экран частотный словарь в порядке убывания частот букв.

Вариант 3

  1. (3 балла) Напишите функцию fake_lemmer(tokens, n), которая получает на вход список токенов и количество букв, которые мы считаем окончанием, и возвращает список пар (пару можно обозначать как кортеж или список из двух элементов): "лемма", "окончание". Должен работать дословно такой пример:

    •    1 >>> x = fake_lemmer(["которая", "получает", "токенов"], 2)
         2 >>> for lemma, suffix in x: print lemma, suffix
         3 ...
         4 котор ая
         5 получа ет
         6 токен ов
      
  2. (3 балла) Напишите функцию suffix_counts(pairs), которая получает на вход список пар: лемма + суффикс, и возвращает словарь, в котором ключ – суффикс, значение – сколько раз встретился суффикс во входном списке. Должен работать дословно такой пример:

    •    1 >>> x = suffix_counts([[u'котор', u'ая'], [u'котор', u'ое'], [u'котор', u'ое'], [u'котор', u'ые']])
         2 >>> for suffix in sorted(x): print suffix, x[suffix]
         3 ...
         4 ая 1
         5 ое 2
         6 ые 1
      
  3. (4 балла) Напишите программу, которая открывает файл "tokens.txt", в котором в каждой строчке написан ровно один токен, "лемматизирует" его (принимая длину окончания равной 2), находит самую частую "лемму", и выводит на экран частоты суффиксов для неё.