Вы находитесь на странице: 1из 4

Segundo Avance del Proyecto Final

Fundamentos de Programación

Reportes: Juego de Tronos


Antecedentes
Se desea desarrollar un sistema para obtener estadísticas y reportes de la serie “Juego de
Tronos” en Python. Para implementar este sistema se ha seleccionado un grupo de estudiantes
con alto nivel de análisis y resolución de problemas, quienes deben aplicar uso de colecciones,
estructuras de control, modularización y archivos para el desarrollo del sistema. Entrega: 13 de
agosto a las 11:55PM vía SIDWEB.

Nota: Los grupos son asignados por el profesor.

Descripción
Para el este avance se necesita implementar una serie de funciones (guardadas en
funciones_got.py) y un programa principal (archivo principal_got.py) que permita probarlas.
Tomando en cuenta que la información estará almacenada en archivos, donde todas las líneas
tienen el mismo formato específico. Debe convertir los datos para almacenarlos en tipos de
datos más fáciles de manejar y buscar para luego poder generar reportes.

1. importarDatos(datosFile= ‘files/personajes.csv’ )
Esta función recibe la ruta relativa de un archivo CSV (separado por comas) y genera dos
cadenas: la primera contiene la primera línea del archivo, mientras que la segunda cadena
contiene el resto de líneas del archivo, pero separadas por el caracter “$”.

Ejemplo de argumento:

# Existe un archivo llamado personajes.csv dentro de la carpeta datos.


# La carpeta datos está en la misma carpeta que funciones_got.py
personajesFile= 'datos/personajes.csv'
episodiosFile= 'datos/episodios.csv'

Resultado: (etiquetas , datos)


etiquetas = 'Personaje,Interpretado por,Tiempo en T1,Tiempo en
T2,Tiempo en T3,Tiempo en T4,Total Tiempo,Nro de Episodios,Aparece en
T1,Aparece en T2,Aparece en T3,Aparece en T4,Estado,Murio en T,Aliado
a Casa'

datos = 'Tyrion Lannister,Peter


Dinklage,52:48,64:24,49:03,56:24,,36,VERDADERO,VERDADERO,VERDADERO,VER
DADERO,Vivo,,House Lannister$Jon Snow,Kit
Harington,59:35,33:20,35:46,43:53,,32,VERDADERO,VERDADERO,VERDADERO,VE
RDADERO,Vivo,,"The Night s Watch House of Stark"$...'
2. importarFamilias(familiasFile= ‘files/familias.csv’ )
Esta función recibe la ruta relativa del archivo “familias.csv” y genera una lista de strings con
los nombres de cada familia noble almacenada en dicho archivo.

Ejemplo de argumentos:
familiasFile = 'datos/familias.csv'

Resultado:
familias = ['Stark', 'Lannister', ...]

3. mostrarEpisodioMasVisto(listaEpisodios, porCasa=False)
Esta función recibe una lista con la información de todos los episodios y una variable booleana.
Si porCasa == True se debe mostrar el episodio más visto (tiene más espectadores) en cada
temporada. Si porCasa == False se debe mostrar el episodio más visto en toda la serie. Para el
nombre del episodio solo debe mostrar los primeros 15 caracteres.

Imprimir en pantalla:

Nro Nombre Rating Espectadores (M) Temporada


----------------------------------------------------------------------
1 Winter Is Com. 8.5 2.22 1
...
Nota: Debe utilizar la función format para dar el formato adecuado a la tabla.
https://pyformat.info/

4. mostrarEstadisticasXCasa (casa= “Stark” )


Esta función recibe el nombre de una casa, por defecto es la casa Stark. Considere que hay
personajes que son aliados a varias casas al mismo tiempo. Se debe mostrar las siguientes
estadísticas para la casa pasada como argumento. Imprimir en pantalla:

Estadísticas de la casa: “----”


--------------------------------------------
# personajes vivos
# personajes muertos
Tiempo total promedio: # que aparecen todos los miembros de esta casa en
todas las temporadas
Personaje más importante: # Nombre del personaje con mayor tiempo total en
todas las temporadas

5. generarReporteCasa (casa)
Esta función recibe una lista de diccionarios de personajes y una cadena con la casa elegida.
Debe guardar el reporte, mostrado en las estadísticas, en un archivo con el nombre
“reporte<Casa>.txt”, donde <Casa> debe ser cambiado por el nombre de la casa.

reporteTyrel.txt

Estadísticas de la casa: “Tyrel”


--------------------------------------------
# personajes vivos
# personajes muertos
Tiempo total promedio: # que aparecen todos los miembros de esta casa en
todas las temporadas
Personaje más importante: # Nombre del personaje con mayor tiempo total en
todas las temporadas

6. generarReporteMuertosXCasa (casa)
Esta función recibe una lista de diccionarios de personajes y una cadena con la casa elegida.
Debe guardar el reporte en un archivo con el nombre “reporteMuertosX<Casa>.txt”, donde
<Casa> debe ser cambiado por el nombre de la casa. La información que se debe almacenar es:
Nombre del personaje muerto, Tiempo total que aparece en la serie, Mayor tiempo que
aparece en una temporada (El mayor entre temporadas), temporada en la que muere.

reporteMuertosXStark.txt

Robb Stark,87:12,30:14,T3
Eddard Stark,94:35,94:35,T1
...

7. Programa principal
En un archivo llamado principal_got.py debe escribir el programa principal. Este programa
debe mostrar un menú con las siguientes opciones:

Menú principal – Reportes de Juego de Tronos

---------------------------------------------------------------------

1. Importar datos de los personajes. 1


2. Importar datos de los episodios.
3. Importar nombres de las casas nobles.
4. Mostrar estadísticas para casa Stark.
5. Elegir casa para mostrar las estadísticas correspondientes. 2
6. Mostrar episodios más vistos por temporada.
7. Elegir casa para guardar reportes en archivo. 3
8. Salir

1
Después de importar datos debe imprimir la colección(es) correspondiente.
2
Para elegir casa se debe mostrar una lista enumerada de casas disponibles y el usuario simplemente
debe ingresar el número correspondiente.
3
Después de guardar el reporte debe mostrar la ruta del archivo generado.
Subir a SIDWEB los archivos funciones_got.py y principal_got.py dentro de un archivo ZIP o
RAR.

Rúbrica
Se calificarán los siguientes aspectos en porcentajes especificados.

1. Primer avance 25%:


a. Todos los literales valen lo mismo, 3 puntos, excepto el programa principal que
vale 4 puntos.
2. Segundo avance 25%:
a. Modificar y/o reutilizar las funciones desarrolladas para el primer avance. 10
puntos.
b. Todos los literales de este avance valen lo mismo, 2 puntos. Excepto el
programa principal que vale 3 puntos.
3. Entrega final 50%:
a. Para la entrega del proyecto final se deberá entregar por lo menos el 80% de
las funcionalidades requeridas en los 3 avances, caso contrario obtendrá una
calificación de cero.

Вам также может понравиться