LABORATORIO: Evaluando los resultados de los estudiantes

Tiempo Estimado

60 - 120 minutos

Nivel de Dificultad

Medio/Difícil

Objetivos

  • Mejorar las habilidades del alumno para operar con archivos en modo lectura.
  • Perfeccionar las habilidades del estudiante para definir y usar excepciones y diccionarios.

Escenario

Un profesor toma regularmente notas de sus estudiantes en un archivo de texto. Cada línea del archivo contiene 3 elementos: el nombre del alumno, el apellido del alumno y el número de puntos que el alumno recibió durante ciertas clases.

Los elementos están separados con espacios en blanco. Cada estudiante puede aparecer más de una vez dentro del archivo del profesor.

El archivo puede tener el siguiente aspecto:

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

Tu tarea es escribir un programa que:

  • Pida al usuario el nombre del archivo del profesor.
  • Lea el contenido del archivo y cuenta la suma de los puntos recibidos por cada estudiante.
  • Imprima un informe simple (pero ordenado), como este:
Andrew Cox 	 1.5
Anna Boleyn 	 15.5
John Smith 	 7.0
  • Tu programa debe estar completamente protegido contra todas las fallas posibles: la inexistencia del archivo, el vacío del archivo o cualquier falla en los datos de entrada; encontrar cualquier error de datos debería causar la terminación inmediata del programa, y lo erróneo deberá presentarse al usuario.
  • Implementa y usa tu propia jerarquía de excepciones, la tienes en la plantilla posterior.La segunda excepción se debe generar cuando se detecta una línea incorrecta y la tercera cuando el archivo fuente existe pero está vacío.
  • Emplea un diccionario para almacenar los datos de los estudiantes.

Puedes usar esta plantilla para realizar el programa:

class StudentsDataException(Exception):
    pass


class WrongLine(StudentsDataException):
# Escribe tu código aquí.


class FileEmpty(StudentsDataException):
# Escribe tu código aquí.