Задачи про Файлы

Несколько общих слов про решение задач в этом разделе и в следующих

Напоминаю, что мы договаривались создавать функции одного из двух видов:

  1. чистые функции, они не имеют побочных эффектов, т.е. ничего не печатают на экране, не изменяют никаких файлов, не изменяют переданные им объекты, внешние переменные, т.е. не делают ничего, что заметно вне вызова функции. Такие функции обязательно возвращают результат вычислений, ради которого их и вызывают.
  2. функции-операции. Они печатают на экран, выводят данные в файлы, изменяют переданные аргументы, например, переворачивают переданный им список, т.е. имеют побочные эффекты. Такие функции не должны возвращать ничего.

Если в задаче явно не сказано обратного, вы должны делать либо чистую функцию, либо функцию-операцию. Это требование именно для наших задач, в реальном программировании, не учебном, такое разделение видов функций тоже полезно соблюдать, оно упрощает отладку программ, хотя, конечно, используется больше видов функций.

Про задачи о файлах, прочитайте внимательно.

Не забывайте правильно открывать файлы, используйте для этого конструкцию with, которая гарантирует закрытие файла. В одной конструкции with можно указать сразу несколько файлов. Помните, что есть много способов читать файлы. И построчно, и целиком, и фиксированное количество символов, эти способы указаны в лекции о файлах. Выбирайте подходящий для задачи способ чтения файла.

Задачи

  1. Дано имя текстового файла. Надо посчитать и вывести на экран такую информацию:
     количество строк: ...
     количество слов: ...
     средняя длина слова: ... (округлив до 2 знаков после запятой)
    
  2. В этой задаче нужно будет читать слова из файлов. Под словом понимается последовательность непробельных символов, поэтому используйте функцию split для разделения текста на слова. Дополнительная обработка, в частности, убирание знаков препинания, не нужна.
    1. Дано имя текстового файла. Верните все слова файла в виде одного списка.
    2. Дано имя текстового файла. Верните все слова файла в виде списка списков, где внутренние списки соответствуют строкам файла. Например, файл
       Если я чешу в затылке - 
       Не беда! 
       В голове моей опилки, 
      

    Должно получиться (форматирование построчно дано только для ясности, это всего-лишь списки):

     [
         ['Если', 'я', 'чешу', 'в', 'затылке', '-'],
         ['Не', 'беда!'],
         ['В', 'голове', 'моей', 'опилки,']
     ]
    
  3. Дано имя файла, файл надо открыть как двоичный файл и найти самый частый байт. Т.е. число от 0 до 255, которое встречается чаще всего.

  4. Дано имя текстового файла и еще одно имя файла для вывода результата. Необходимо записать во второй файл содержимое первого файла, повторив каждый символ дважды.