Module (47%)
Section (94%)
Лабораторная работа

Время выполнения

30-90 минут

Уровень сложности

Средний

Цели

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

Сценарий

Профессор Джекилл проводит занятия со студентами и регулярно делает заметки в текстовом файле. Каждая строка файла содержит 3 элемента: имя ученика, фамилия ученика и балл, который ученик получил во время определенных занятий.

Элементы разделены пробелами. Каждый студент может появляться в файле профессора Джекилла несколько раз.

Файл может выглядеть следующим образом:

John Smith 5 Anna Boleyn 4.5 John Smith 2 Anna Boleyn 11 Andrew Cox 1.5

samplefile.txt

Ваша задача - написать программу, которая:

  • запрашивает у пользователя проф. Джекилла имя файла;
  • читает содержимое файла и подсчитывает сумму полученных баллов для каждого учащегося;
  • печатает простой (но отсортированный) отчет, как этот:
Andrew Cox 1.5 Anna Boleyn 15.5 John Smith 7.0

output

Примечание:

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

Совет: Используйте словарь для хранения данных учеников.

Code

class StudentsDataException(Exception):
pass


class BadLine(StudentsDataException):
# put your code here


class FileEmpty(StudentsDataException):
# put your code here
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×