📝 Практические задания

⚡ Задания в двух словах

  • Задание 1 — подсчитать частоту слов в файле и вывести топ-N.
  • Задание 2 — удалить пустые строки из файла и сохранить результат.
  • Задание 3 — найти файлы с заданным расширением в директории.
  • Задание 4 (LMS) — фильтровать строки по ключевому слову.
  • Задание 5 (LMS) — удалить дублирующиеся строки, сохранив порядок.

🏋️ Раздел тренировки

Выполните задания в отдельных файлах. Используйте контекстный менеджер with, явно указывайте кодировку utf-8 и обрабатывайте отсутствие файла.

Цель: научиться открывать файлы в разных режимах, читать и записывать данные, обрабатывать ошибки FileNotFoundError.

Задание 1. Подсчёт частоты слов в файле

Условие: напишите программу, которая подсчитывает, сколько раз каждое слово встречается в файле (не учитывая регистр).

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

Пример ввода:

Введите имя файла: text.txt
Введите количество популярных слов: 3

Пример вывода:

Популярные слова:
python: 4
is: 3
in: 2

Подсказка: используйте collections.Counter и предварительно очистите текст от знаков препинания.

Задание 2. Удаление пустых строк

Условие: напишите программу, которая удаляет пустые строки из указанного пользователем файла и записывает результат в новый файл.

  • Имя нового файла формируется автоматически по шаблону <oldname>_cleaned.txt.
  • Если указанный файл не существует, программа должна вывести ошибку.

Пример ввода:

Введите имя файла: tasks.txt

Пример вывода:

Пустые строки удалены, сохранено в tasks_cleaned.txt.

Подсказка: используйте os.path.splitext() или rsplit(".", 1) для формирования имени нового файла.

Задание 3. Файлы с заданным расширением

Условие: напишите программу, которая принимает путь к директории и расширение файлов через аргументы командной строки, ищет файлы с указанным расширением и выводит список найденных файлов.

Пример запуска:

python script.py /home/user/projects .py

Пример вывода:

Найденные файлы в директории '/home/user/projects':
script.py, test.py, main.py

Подсказка: используйте модуль os и функцию os.listdir() или os.walk().

🏠 Задания из LMS

Домашнее задание 1. Фильтрация по ключевому слову

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

  • Имя нового файла формируется как <keyword>_<original_filename>.
  • Если файл не существует, программа должна вывести ошибку.
  • Если совпадения не найдены, новый файл не создаётся.

Пример ввода:

Введите имя файла для поиска: system_log.txt
Введите ключевое слово: error

Пример вывода:

Строки, содержащие 'error', сохранены в error_system_log.txt.

Домашнее задание 2. Поиск и удаление дубликатов

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

  • Имя нового файла формируется как unique_<original_filename>.
  • Если файл не существует, программа должна вывести ошибку.
  • Исходный порядок строк должен сохраниться.
  • Если в файле нет дубликатов, создаётся точная копия файла.

Пример ввода:

Введите имя файла: movies_to_watch.txt

Пример вывода:

Дубликаты удалены. Уникальные строки сохранены в unique_movies_to_watch.txt.

Проверка понимания

Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.

Вопрос 1

Какой стиль имён переменных обычно рекомендует PEP 8?

Вопрос 2

Зачем использовать f-strings в современном Python?

Вопрос 3

Когда полезен ранний возврат из функции?

Вопрос 4

Что делает аннотация типа в Python?

Вопрос 5

Как лучше обрабатывать ожидаемую ошибку преобразования?

Вопрос 6

Чем отличается = от ==?

Вопрос 7

Что делает print()?