Ejercicio Integrador Unidad 4
Ejercicio Integrador Unidad 4
Ejercicio Integrador Unidad 4
while True:
menu = "1. Ingreso de películas\n" + "2. Ingreso de actores por
película\n" + "3. Reporte de actores\n" + \
"4. Calificación de protagonistas\n" + "5. Ranking de
películas\n" + "6. Salir"
print("-"*41)
print(menu)
print("-"*41)
opcion = input("Ingrese el número de una opción del menú: ")
filmsTop = []
films = []
puntajes = []
actoresPorPelicula = []
protagonistas = []
protagonistasFemeninas = []
protagonistasMasculinos = []
while (not opcion.isdigit()) or int(opcion) > 6 or int(opcion) <
1:
print("¡No es una opción válida!")
opcion = input("Ingrese el número de una opción del menú: ")
opcion = int(opcion)
if opcion == 1:
contador = 0
pelicula = ""
puntaje = ""
while pelicula != "ninguna":
contador += 1
pelicula = input("Pelicula: ")
if pelicula == "ninguna":
print("\n")
elif contador % 2 == 0:
listaPtsIndividual = pelicula.strip(" ").split(",")
libreto = int(listaPtsIndividual[0])
musica = int(listaPtsIndividual[1])
efectos = int(listaPtsIndividual[2])
pp = (0.5 * libreto) + (0.3 * musica) + (0.2 *
efectos)
puntajes.append(pp)
else:
films.append(pelicula)
puntajesOrdenados = puntajes.copy().sort(reverse=True)
for pts in puntajesOrdenados:
filmsTop.append(films[puntajes.index(pts)])
elif opcion == 2:
if len(filmsTop) == 0:
print("¡No ha ingresado ninguna película!\n")
else:
print("Para cada actor especifique su género (M ó F)
separado del nombre por una barra vertical (|)")
print("Separe cada actor mediante comas.")
for i in range(len(filmsTop)):
artistas = input("Ingrese los actores de " +
filmsTop[i] + ": ")
listaArtistas = artistas.strip(" ").split(",")
actuacionEstaPelicula = []
for individuo in listaArtistas:
datos = individuo.split("|")
nombre = datos[0]
genero = datos[1]
actuacionEstaPelicula.append(nombre)
if genero == "F":
protagonistasFemeninas.append(nombre)
else:
protagonistasMasculinos.append(nombre)
actoresPorPelicula.append(actuacionEstaPelicula)
for actriz in protagonistasFemeninas:
protagonistas.append(actriz)
for actor in protagonistasMasculinos:
protagonistas.append(actor)
elif opcion == 3:
if len(protagonistas) == 0:
print("¡No ha ingresado ninguna película!\n")
else:
listaContadores = []
for actor in protagonistas:
contadorPeliculas = 0
for listaActores in actoresPorPelicula:
if actor in listaActores:
contadorPeliculas += 1
listaContadores.append(contadorPeliculas)
maximoApariciones = max(listaContadores)
numActoresPopulares =
listaContadores.count(maximoApariciones)
print("Actor popular: ", end=(""))
indiceAnterior = 0
for i in range(numActoresPopulares):
indice = listaContadores[indiceAnterior:].index(max)
print(protagonistas[indice])
indiceAnterior += (indice + 1)
print("Total de actrices: " + len(protagonistasFemeninas)
+ "\tTotal de actores: " + len(protagonistasMasculinos))
print("\nProtagonistas: ")
for actor in protagonistas:
print(actor)
elif opcion == 4:
if len(protagonistas) == 0:
print("¡No ha ingresado ninguna película!\n")
else:
print("Ingrese una calificación entre 1 y 5 para cada
protagonista")
for actor in protagonistas:
calificacion = input("Ingrese una calificación para el
actor: ")
while (not calificacion.isdigit()) or
int(calificacion) > 5 or int(calificacion) < 1:
print("¡No es una calificación válida!")
calificacion = input("Ingrese una calificación
para el actor: ")
calificacion = int(calificacion)
for listaActores in actoresPorPelicula:
if actor in listaActores and calificacion < 10:
calificacion += 1
elif opcion == 5:
print("Películas: ")
if len(filmsTop) == 0:
print("¡No ha ingresado ninguna película!\n")
else:
for movie in filmsTop:
if movie == filmsTop[-1]:
print(movie)
else:
print(movie, end=" ~~~ ")
print("Número de películas disponibles: " + "%d" %
len(filmsTop))
rangoInicio = input("Ingrese el índice desde el cual desee
iniciar su rango de búsqueda: ")
while (not rangoInicio.isdigit()) or int(rangoInicio) < 0:
print("¡No es un índice válido!")
rangoInicio = input("Ingrese el índice desde el cual
desee iniciar su rango de búsqueda: ")
rangoInicio = int(rangoInicio)
rangoFin = input("Ingrese el índice en el cual desee
finalizar su rango de búsqueda: ")
while (not rangoFin.isdigit()) or int(rangoFin) >
(len(filmsTop) - 1):
print("¡No es un índice válido!")
rangoFin = input("Ingrese el índice en el cual desee
finalizar su rango de búsqueda: ")
rangoFin = int(rangoFin)
filmsEnRango = filmsTop[rangoInicio:rangoFin + 1]
for movie in filmsEnRango:
print(movie)
else:
print("Usted ha salido del programa.")
break