Proyecto de Nivel 2
Mi agenda de películas para la semana de receso
Objetivo general
El objetivo general de este proyecto es que usted practique todos los conceptos estudiados en el
nivel 2 del curso.
Recuerde que este proyecto debe realizarse de forma completamente individual.
Objetivos específicos
1. Llamar funciones con parámetros y componer funciones.
2. Usar la técnica Dividir y Conquistar
3. Crear y usar un módulo.
4. Utilizar condicionales.
5. Utilizar diccionarios.
6. Construir interfaces de usuario basadas en consola.
Para lograr lo anterior, en este taller se va a utilizar una aplicación que permite manejar la agenda
de películas de Netflix que usted verá durante la semana de receso.
Descripción de la aplicación
En este proyecto, usted creará una aplicación para hacer la planeación de las 5 películas de Netflix
que usted verá durante la semana de receso, como recompensa por haber cumplido
satisfactoriamente con sus compromisos académicos, en particular el desarrollo del proyecto del
nivel 2 de IP .
De cada una de las películas seleccionadas se guarda la siguiente información:
Nombre.
Género: documental, drama, familiar, comedia, terror, acción, thriller, ciencia-ficción,
suspenso. Una película puede tener varios géneros a la vez.
Año de estreno.
Duración en minutos.
Clasificación por edad: todos, 7+, 13+, 16+, 18+.
Día de la semana en el que usted planea ver la película: lunes, martes, miércoles, jueves,
viernes, sábado o domingo.
Hora del día en que usted planea ver la película.
El nuevo programa debe ofrecer las siguientes funcionalidades:
Encontrar la película más larga (cuya duración sea superior a todas las demás).
Calcular la duración promedio de las 5 películas de la agenda. Esta duración debe
mostrarse al usuario en formato “HH:MM”.
Encontrar las películas de la agenda que hayan sido estrenadas después de un año dado.
Contar el número de películas cuya clasificación sea 18+.
Reagendar una película (cambiar el día y/u hora en que se desea ver).
Decidir si usted puede invitar a un familiar o amigo a ver una película dada.
El programa debe tener en cuenta las siguientes reglas:
Al reagendar una película, la aplicación debe evitar que usted programe dos películas al
mismo tiempo o que se superpongan. Un conflicto de horario sucede cuando las dos
películas se programan para un mismo día y adicionalmente la hora de inicio de una de las
películas es anterior a la hora de finalización de la otra.
Al reagendar una película, usted podrá indicarle al programa si desea o no que tenga en
cuenta sus preferencias sobre el horario para verla. Estas preferencias son las siguientes:
NO ver películas de género Documental si estas tienen horario a las 10 PM o más
tarde (para evitar dormirse, aplicaría para horarios entre 10 PM y 6 AM).
NO ver películas de género Drama los Viernes (para no entristecerse).
NO ver ninguna película entre semana (de lunes a viernes) si esta comienza a las 11
PM o más tarde o antes de las 6 AM (para evitar trasnochar en semana).
Dependiendo de su decisión, el programa tendrá o no en cuenta dichas restricciones para
verificar si el nuevo horario de la película es adecuado.
Cuando usted quiera invitar a un familiar o a un amigo a ver una película dada, es
indispensable que su programa verifique el cumplimiento de unas ciertas restricciones, en
especial cuando el invitado es un menor de edad:
Usted puede invitar a cualquier persona a ver cualquier película, si la persona es
mayor de edad (tiene 18 años o más).
NO se puede invitar personas menores de 15 años a ver películas de género
Terror.
Si el invitado tiene 10 años o menos, solo se puede invitar a ver películas de
género Familiar.
Si la edad del invitado no cumple con la clasificación por edad de la película, el
invitado debe contar con la autorización de los padres para verla, excepto si la
película es de género Documental.
Actividad 1: Preparación del ambiente de trabajo
1. Cree una carpeta para trabajar, poniéndole su nombre o login.
2. Descargue de Bloque Neón el archivo con el “esqueleto” del proyecto (n2-
[Link]) y descomprímalo en su carpeta de trabajo. El esqueleto consiste en un
conjunto de archivos que usted va a modificar.
3. Descomprima el esqueleto en la carpeta en la que usted acaba de crear.
4. Abra Spyder y cambie la carpeta de trabajo para que sea la carpeta con el esqueleto.
Actividad 2: Completar el módulo de funciones para
manejar la agenda de películas
5. Abra el archivo llamado “modulo_peliculas.py”. En este archivo usted va a completar las
funciones necesarias para manejar su agenda de películas. Note que las funciones de este
módulo están debidamente documentadas y tienen una etiqueta TODO, que significa que
usted debe completarlas.
ATENCIÓN: este archivo debe estar dentro de la misma carpeta (directorio) del esqueleto del
proyecto.
6. Implemente las funciones en este archivo de acuerdo con la documentación.
Cada película se va a representar utilizando un diccionario que debe tener las siguientes llaves:
Llave Descripción de la llave
nombre Es una cadena con el nombre de la película agendada.
genero Es una cadena con los géneros de la película separados por comas. Por ejemplo:
“Drama, Comedia”. Los posibles géneros son: “Documental”, “Drama”,
“Familiar”, “Comedia”, “Terror”, “Acción”, “Thriller”, “Ciencia-Ficción”,
“Suspenso”.
duracion Es un número entero que representa la duración en minutos de la película.
anio Es un número entero que corresponde al año de estreno de la película.
clasificacion Es una cadena que representa la calificación según la MPAA (Asociación
Cinematográfica de Estados Unidos) sobre el posible contenido sensible incluido
en la película. Los posibles valores son: “todos”, “7+”, “13+”, “16+”, “18+”.
hora Es un número entero que representa la hora de inicio de la película. Se encuentra
en formato de 24 horas. Por ejemplo: 1625 representa las 4:25 pm.
dia Es una cadena que expresa el día de la semana en que se planea ver la película
(“Lunes”, “Martes”, “Miércoles”, etc. ).
Actividad 3: Construir una interfaz de usuario basada
en consola
7. En esta actividad usted tiene que construir la interfaz basada en consola para que el usuario
interactúe con la aplicación. Para construir esta interfaz usted debe completar el archivo
consola_peliculas.py, el cual ya tiene una parte implementada que le facilitará su trabajo. La
parte que ya está hecha incluye algunos elementos de Python que se estudiarán en el
siguiente nivel así que usted sólo tiene que modificar los elementos marcados con la etiqueta
TODO.
Las siguientes son las opciones que tiene que ofrecer el programa:
a. Consultar película más larga: muestra al usuario la información de la película en la
agenda cuya duración sea la mayor de todas.
b. Consultar duración promedio de las películas: informa al usuario la duración promedio
de todas las películas de la agenda. Esta duración debe mostrarse en el formato
"HH:MM" (horas y minutos)
c. Buscar estrenos: muestra al usuario todos los nombres de las películas que sean más
recientes que un año que el usuario ingresa al programa.
d. Contar películas mayores: informa al usuario cuantas películas en la lista tienen la
clasificación 18+.
e. Reagendar película: pide al usuario el nombre de una película, junto con un nuevo
horario y día, y si desea o no que tenga en cuenta sus preferencias sobre el horario para
verla. Con base en esta información, intenta agendar la película e informa al usuario si se
pudo reagendar o no. Recuerde las restricciones mencionadas anteriormente.
f. Decidir invitar: pide al usuario el nombre de la película a la cual desea invitar a un amigo
o familiar, así como la edad del invitado y si cuenta o no con la autorización de los
padres. Con base en esta información, le informa si es posible invitar a la persona bajo
estas condiciones.
g. Salir: termina la aplicación.
8. Ejecute el programa y pruebe cada una de las funciones para asegurar que esté funcionando.
Entrega
9. Comprima la carpeta llamada “esqueleto” con su proyecto resuelto. El archivo comprimido
debe llamarse [Link], donde login es su nombre de usuario de Uniandes.
10. Entregue el archivo comprimido a través de Bloque Neón en la actividad designada
como Proyecto de Nivel 2