Beispiel #1
0
def test_empty(slt):
    assert lst.isEmpty(slt) == True
    assert lst.size(slt) == 0
Beispiel #2
0
def main():
    while True:
        printMenu()
        inputs = input('Seleccione una opción para continuar\n')
        if int(inputs[0]) == 1:
            print("Cargando información de los archivos ....")
            print("Recursion Limit:", sys.getrecursionlimit())
            catalog = initCatalog()
            loadData(catalog)
            print('Tamaño Lista accidentes cargados: ' +
                  str(lt.size(catalog['AccidentList'])))
            print('Tamaño árbol Accidentes por ID: ' +
                  str(tree.size(catalog['AccidentIDTree'])))
            print('Tamaño árbol accidentes por fecha : ' +
                  str(tree.size(catalog['yearsTree'])))
            print('Altura árbol por ID: ' +
                  str(tree.height(catalog['AccidentIDTree'])))
            print('Altura árbol por fecha: ' +
                  str(tree.height(catalog['yearsTree'])))
        elif int(inputs[0]) == 2:
            title = input("Nombre del titulo a buscar: ")
            book = controller.getBookTree(catalog, title)
            if book:
                print("Libro encontrado:", book['title'],
                      book['average_rating'])
            else:
                print("Libro No encontrado")
        elif int(inputs[0]) == 3:
            date = input("Ingrese la fecha en formato anio-mes-dia: ")
            rank = controller.rankBookTree(catalog, date)
            print("Hay ", rank, " accidentes antes de " + date)
        elif int(inputs[0]) == 4:
            fecha = input('ingrese la fehca de la forma %YYYY-%mm-%dd: ')
            estado = controller.getEstate(catalog, fecha)
            if estado:
                print('el estado con mayor cantidad de accidentes en la fecha',
                      fecha, 'es ', str(estado['Estado']), 'con ',
                      str(estado['Accidentes']), 'accidentes.')
            else:
                print("no se encontro estado ")
        elif int(inputs[0]) == 5:
            year = input(
                "Ingrese la fecha a consultar de la forma %YYYY-%mm-%dd::")
            response = controller.getBookByYearRating(catalog, year)
            if response:
                print(response)
            else:
                print("No se encontraron Accidentes para la fecha", year)
        elif int(inputs[0]) == 6:
            years = input(
                "Ingrese los años desde y hasta (%YYYY-%mm-%dd %Y-%m-%dd):")
            counter = controller.getBooksCountByYearRange(catalog, years)
            if counter:
                print("Cantidad de accidentes entre las fechas", years, ":")
                lista = map.valueSet(counter)
                for i in range(1, lt.size(lista)):
                    print(lt.getElement(lista, i))
            else:
                print("No se encontraron accidentes para el rango de fechas",
                      years)
        else:
            sys.exit(0)
    sys.exit(0)
Beispiel #3
0
def main():
    while True:
        printMenu()
        inputs = input('Seleccione una opción para continuar\n')
        if int(inputs[0]) == 1:
            print("Cargando información de los archivos ....")
            print("Recursion Limit:", sys.getrecursionlimit())
            catalog = initCatalog()
            loadData(catalog)
            print('Tamaño Lista libros cargados: ' +
                  str(lt.size(catalog['booksList'])))
            print('Tamaño árbol Libros por titulo: ' +
                  str(map.size(catalog['booksTitleTree'])))
            print('Tamaño árbol Libros por año : ' +
                  str(map.size(catalog['yearsTree'])))
            print('Altura árbol por titulo: ' +
                  str(map.height(catalog['booksTitleTree'])))
            print('Altura árbol por año: ' +
                  str(map.height(catalog['yearsTree'])))

        elif int(inputs[0]) == 2:
            title = input("Nombre del titulo a buscar: ")
            book = controller.getBookTree(catalog, title)
            if book:
                print("Libro encontrado:", book['title'],
                      book['average_rating'])
            else:
                print("Libro No encontrado")
        elif int(inputs[0]) == 3:
            title = input("Nombre del titulo a buscar (rank): ")
            rank = controller.rankBookTree(catalog, title)
            print("Hay ", rank, " titulos menores (rank) que " + title)
        elif int(inputs[0]) == 4:
            pos = int(
                input(
                    "Posición del k-esimo titulo del libro (select) a obtener: "
                ))
            book = controller.selectBookTree(catalog, pos)
            if book:
                print("Libro en posición:", pos, ":", book['value']['title'],
                      book['value']['average_rating'])
            else:
                print("Libro no encotrado en posicion: ", pos)
        elif int(inputs[0]) == 5:
            year = input("Ingrese el año a consultar:")
            response = controller.getBookByYearRating(catalog, year)
            if response:
                print(response)
            else:
                print("No se encontraron libro para el año", year)
        elif int(inputs[0]) == 6:
            year = input("Ingrese la fecha a consultar: ")
            Severity = input('ingrese la severidad: ')
            response = controller.getBookByYearRating(catalog, year,
                                                      int(Severity))
            if response:
                print('En la fecha ' + str(year) + ' se presentaron ' +
                      str(response) + ' accidentes de severidad ' +
                      str(Severity))
            else:
                print("No se encontraron accidentes para la fecha", year)
        else:
            sys.exit(0)
    sys.exit(0)
Beispiel #4
0
def rankingPorGenero (list1, generoBuscado:str):

#generate list by given genre
    resultList2= lt.newList()
    averageVotes=0
    currentNumVotes=0
    totalVotes=0


#este loop recorre el array importado del csv  y crea un array nuevo con el contenido que cumple el criterio
    for i in range (0, lt.size(list1)):
        if (lt.getElement(list1, i)['genres'] in normalizeCase(generoBuscado)): #case insensitive
            lt.addLast(resultList2, (lt.getElement(list1, i)))   #se agrega a la lista resultado

    print ("Las peliculas encontradas son:" )
    for j in range (lt.size(resultList2)):               #loop para imprimir todos los titulos encontrados con un indice
        print((j, (lt.getElement(resultList2,j))['original_title'])) 
    print ("se encontraron" , lt.size(resultList2) , "del genero especificado \n")

#ask for input selection
    print ("Ingrese su selección de peliculas para el ranking\n puede ingresar numeros (1,2,3) o rangos(1-3)\n separados con una coma")
    rankingSearchInput=str(input ("Ingrese las peliculas escogidas:\n"))

#turn selection String into number array
    searchParameters= numberStringtoList(rankingSearchInput)
#create new array with given indexes
#no se utiliza el metodo lt.sublist pues este no incluye intervalos
    

    
    rankingList= lt.newList()

    
    for n in range (len(searchParameters)):    
        lt.addLast(rankingList, (lt.getElement(resultList2,n)))
        #rankingList.append(resultList[searchParameters[n]])
    
    for o in range(lt.size(rankingList)):
        print(o+1, (lt.getElement(resultList2,o))['original_title'])
    print('Se seleccionaron ', lt.size(rankingList), ' peliculas')

#ask for sorting criteria1
    printMenuSortingcriteria()
    criteriaInput=str(input ("Ingrese el criterio para el ranking:\n"))
    

#ask for sorting order
    if int (criteriaInput)==1: #vote count
        searchCriteria = 'vote_count'
    elif int(criteriaInput)==2: #vote average
        searchCriteria='vote_average'


    #ask for sorting
    printMenuSortingOrder()
    orderInput=str(input ("seleccione el orden para el ranking\n"))

    if int (orderInput)==1: #descendente
        #orderedRankingList= rankingList
        orderedRankingList= lt.newList()
        orderedRankingList=insertion.insertionSortVoteCount (rankingList)
        for n in range(lt.size(orderedRankingList)):
            print((n+1, orderedRankingList[n]['original_title'], orderedRankingList[n]['vote_count']))

    elif int(orderInput)==2: #vote average
        searchCriteria='vote_average'#ascendente
Beispiel #5
0
    else:
        print ('No se encontraron peliculas')



"""
Menu principal
"""
while True:
    printMenu()
    inputs =input('Seleccione una opción para continuar\n')
    if int(inputs[0])==1:
        print("Cargando información de los archivos ....")
        catalog = initCatalog ()
        loadData (catalog)
        print ('Peliculas cargadas: ' + str(lt.size(catalog['movies'])))
        print ('Directores cargados: ' + str(lt.size(catalog['directors'])))


    elif int(inputs[0])==2:
        number = input ("Buscando las TOP ?: ")
        movies = controller.getBestMovies (catalog, int(number))
        printBestMovies (movies)

    elif int(inputs[0])==3:
        dir_name = input("Nombre del director a buscar: ")
        movies = controller.getMoviesByDirector (catalog, dir_name)
        print(movies)


    elif int(inputs[0])==4:
def create_ranking(listadetails, parametro_average_best,
                   parametro_average_worst, parametro_count_best,
                   parametro_count_worst):
    t1_start = process_time()  #tiempo inicial
    try:
        averagebest, averageworst, countbest, countworst = order_list(
            listadetails, parametro_average_best, parametro_average_worst,
            parametro_count_best, parametro_count_worst)
        if parametro_average_best > 0:
            print(
                "-------------------------------------------------------------------"
            )
            print("MEJOR VALORADAS")

            #print(averagebest)
            lista = []
            x = lt.size(averagebest)
            print(x)
            for i in range(1, x + 1):
                y = lt.getElement(averagebest, i)
                lista.append(y["original_title"])
            print(lista)
        if parametro_average_worst > 0:
            print(
                "-------------------------------------------------------------------"
            )
            print("PEOR VALORADAS")
            lista = []
            x = lt.size(averageworst)
            print(x)
            for i in range(1, x + 1):
                y = lt.getElement(averageworst, i)
                lista.append(y["original_title"])
            print(lista)
        if parametro_count_best > 0:
            print(
                "-------------------------------------------------------------------"
            )
            print("MEJOR VOTADAS")
            lista = []
            #print(countbest)
            x = lt.size(countbest)
            print(x)
            for i in range(1, x + 1):
                y = lt.getElement(countbest, i)
                lista.append(y["original_title"])
            print(lista)
        if parametro_count_worst > 0:
            print(
                "-------------------------------------------------------------------"
            )
            print("PEOR VOTADAS")
            lista = []
            x = lt.size(countworst)
            print(x)
            for i in range(1, x + 1):
                y = lt.getElement(countworst, i)
                lista.append(y["original_title"])
            print(lista)
    except:
        print(
            "Hubo un error al ingresar parametros, por favor vuelva a intentarlo."
        )
    t1_stop = process_time()  #tiempo final
    print(
        "-------------------------------------------------------------------")
    print("Tiempo de ejecución ", t1_stop - t1_start, " segundos")
def create_ranking_gender(listadetails, name_gender, parametro_average_best,
                          parametro_average_worst, parametro_count_best,
                          parametro_count_worst):
    t1_start = process_time()  #tiempo inicial

    try:
        lista_genero = filtrar_por_genero(listadetails, name_gender)
        averagebest, averageworst, countbest, countworst = order_list(
            lista_genero, parametro_average_best, parametro_average_worst,
            parametro_count_best, parametro_count_worst)
        x = lt.size(lista_genero)
        sumatoria = 0
        for i in range(1, x + 1):
            y = lt.getElement(lista_genero, i)
            sumatoria += float(y["vote_count"])
        promedio = sumatoria / x
        promedio = round(promedio, 2)
        promedio_final = "El promedio de votos de de " + name_gender + " es : " + str(
            promedio) + " votos"
        print(promedio_final)
        sumatoria_average = 0
        for i in range(1, x + 1):
            y = lt.getElement(lista_genero, i)
            sumatoria_average += float(y["vote_average"])
        promedio_average = sumatoria_average / x
        promedio = round(promedio_average, 2)
        promedio_average_final = "El promedio de calificaciones de las películas de " + name_gender + " es : " + str(
            promedio) + "."

        if parametro_average_best > 0:
            print(
                "-------------------------------------------------------------------"
            )
            print("MEJOR VALORADAS: " + name_gender)

            #print(averagebest)
            lista = []
            x = lt.size(averagebest)
            print(x)
            for i in range(1, x + 1):
                y = lt.getElement(averagebest, i)
                lista.append(y["original_title"])
            print(lista)
        if parametro_average_worst > 0:
            print(
                "-------------------------------------------------------------------"
            )
            print("PEOR VALORADAS: " + name_gender)
            lista = []
            x = lt.size(averageworst)
            print(x)
            for i in range(1, x + 1):
                y = lt.getElement(averageworst, i)
                lista.append(y["original_title"])
            print(lista)

        if parametro_count_best > 0:
            print(
                "-------------------------------------------------------------------"
            )
            print("MEJOR VOTADAS: " + name_gender)
            lista = []
            #print(countbest)
            x = lt.size(countbest)
            print(x)
            for i in range(1, x + 1):
                y = lt.getElement(countbest, i)
                lista.append(y["original_title"])
            print(lista)
        if parametro_count_worst > 0:
            print(
                "-------------------------------------------------------------------"
            )
            print("PEOR VOTADAS: " + name_gender)
            lista = []
            x = lt.size(countworst)
            print(x)
            for i in range(1, x + 1):
                y = lt.getElement(countworst, i)
                lista.append(y["original_title"])
            print(lista)
        print(
            "-------------------------------------------------------------------"
        )
        print(promedio_average_final)
        print(
            "-------------------------------------------------------------------"
        )
        print(promedio_final)
    except:
        print("Género inválido, intente de nuevo.")
    t1_stop = process_time()  #tiempo final
    print(
        "-------------------------------------------------------------------")
    print("Tiempo de ejecución ", t1_stop - t1_start, " segundos")
def test_empty(lst):
    assert lt.isEmpty(lst) == True
    assert lt.size(lst) == 0
Beispiel #9
0

"""
Menu principal
"""
while True:
    printMenu()
    inputs = input('Seleccione una opción para continuar\n')
    if int(inputs[0]) == 1:
        print("Inicializando Catálogo ....")
        catalog = initCatalog()

    elif int(inputs[0]) == 2:
        print("Cargando información de los archivos ....")
        loadData(catalog)
        print('Libros cargados: ' + str(lt.size(catalog['books'])))
        print('Autores cargados: ' + str(lt.size(catalog['authors'])))
        print('Géneros cargados: ' + str(lt.size(catalog['tags'])))

    elif int(inputs[0]) == 3:
        number = input("Buscando los TOP ?: ")
        books = controller.getBestBooks(catalog, int(number))
        printBestBooks(books)

    elif int(inputs[0]) == 4:
        authorname = input("Nombre del autor a buscar: ")
        author = controller.getBooksByAuthor(catalog, authorname)
        printAuthorData(author)

    elif int(inputs[0]) == 5:
        label = input("Etiqueta a buscar: ")
def test_removeFirst(lstbooks, books):
    assert lt.size(lstbooks) == 5
    lt.removeFirst(lstbooks)
    assert lt.size(lstbooks) == 4
    book = lt.getElement(lstbooks, 1)
    assert book == books[1]
def test_removeLast(lstbooks, books):
    assert lt.size(lstbooks) == 5
    lt.removeLast(lstbooks)
    assert lt.size(lstbooks) == 4
    book = lt.getElement(lstbooks, 4)
    assert book == books[3]
def Requerimiento6(numero, parametro, genero, orden, lista):
    lista_retorno = lt.newList(datastructure="SINGLE_LINKED")
    contador1 = 0
    peliculas = []
    while contador1 < numero:
        mayor = 0
        menor = 99999999999
        titulo = ""
        if parametro == "promedio" and orden == "mayor":
            for i in range(1, lt.size(lista)):
                actual = lt.getElement(lista, i)
                if float(actual["vote_average"]) > mayor and actual[
                        "title"] not in peliculas and genero in actual[
                            "genres"]:
                    mayor = float(actual["vote_average"])
                    titulo = actual["title"]
            lt.addFirst(lista_retorno, [{
                "Película": titulo
            }, {
                "Promedio": mayor
            }])
            peliculas.append(titulo)
            contador1 += 1
        if parametro == "contar" and orden == "mayor":
            for i in range(1, lt.size(lista)):
                actual = lt.getElement(lista, i)
                if float(actual["vote_count"]) > mayor and actual[
                        "title"] not in peliculas and genero in actual[
                            "genres"]:
                    mayor = float(actual["vote_count"])
                    titulo = actual["title"]
            lt.addFirst(lista_retorno, [{
                "Película": titulo
            }, {
                "Votos": mayor
            }])
            peliculas.append(titulo)
            contador1 += 1
        if parametro == "promedio" and orden == "menor":
            for i in range(1, lt.size(lista)):
                actual = lt.getElement(lista, i)
                if float(actual["vote_average"]) < menor and actual[
                        "title"] not in peliculas and genero in actual[
                            "genres"]:
                    menor = float(actual["vote_average"])
                    titulo = actual["title"]
            lt.addFirst(lista_retorno, [{
                "Película": titulo
            }, {
                "Promedio": menor
            }])
            peliculas.append(titulo)
            contador1 += 1
        if parametro == "contar" and orden == "menor":
            for i in range(1, lt.size(lista)):
                actual = lt.getElement(lista, i)
                if float(actual["vote_count"]) < menor and actual[
                        "title"] not in peliculas and genero in actual[
                            "genres"]:
                    menor = float(actual["vote_count"])
                    titulo = actual["title"]
            lt.addFirst(lista_retorno, [{
                "Película": titulo
            }, {
                "Votos": menor
            }])
            peliculas.append(titulo)
            contador1 += 1

    if parametro == "promedio" and orden == "mayor":
        lt.shell(lista_retorno, comparacion_promedio_mayor)
    if parametro == "promedio" and orden == "menor":
        lt.shell(lista_retorno, comparacion_promedio_menor)
    if parametro == "contar" and orden == "mayor":
        lt.shell(lista_retorno, comparacion_contar_mayor)
    if parametro == "contar" and orden == "menor":
        lt.shell(lista_retorno, comparacion_contar_menor)

    return print(lista_retorno)
Beispiel #13
0
def test_removeLast(lstmovies, movies):
    assert lst.size(lstmovies) == 5
    lst.removeLast(lstmovies)
    assert lst.size(lstmovies) == 4
    movie = lst.getElement(lstmovies, 4)
    assert movie == movies[3]
Beispiel #14
0
def test_removeFirst(lstmovies, movies):
    assert lst.size(lstmovies) == 5
    lst.removeFirst(lstmovies)
    assert lst.size(lstmovies) == 4
    movie = lst.getElement(lstmovies, 1)
    assert movie == movies[1]
def loadMoviesDetails():
    listadetails = loadCSVFile("Data/themoviesdb/AllMoviesDetailsCleaned.csv"
                               )  #llamar funcion cargar datos
    print("Datos cargados details, ", lt.size(listadetails),
          " elementos cargados")
    return listadetails
def loadMovies(dire):
    lst = loadCSVFile(dire,compareRecordIds) 
    print("Datos cargados, " + str(lt.size(lst)) + " elementos cargados")
    return lst
def loadMoviesCasting():
    listacasting = loadCSVFile("Data/themoviesdb/AllMoviesCastingRaw.csv")
    print("Datos cargados casting, ", lt.size(listacasting),
          " elementos cargados")

    return listacasting
def main():
    """
    Método principal del programa, se encarga de manejar todos los metodos adicionales creados

    Instancia una lista vacia en la cual se guardarán los datos cargados desde el archivo
    Args: None
    Return: None 
    """

#"themoviesdb/MoviesCastingRaw-small.csv"
#"themoviesdb/SmallMoviesDetailsCleaned.csv"
    while True:
        printMenu() #imprimir el menu de opciones en consola
        inputs =input('Seleccione una opción para continuar\n') #leer opción ingresada
        if len(inputs)>0:

            if int(inputs[0])==1: #opcion 1
                datos_casting=loadMovies("themoviesdb/AllMoviesCastingRaw.csv")
                datos_movies=loadMovies("themoviesdb/AllMoviesDetailsCleaned.csv")

            elif int(inputs[0])==2: #opcion 2
                decision1=int(input("Sí desea que sus peliculas se ordenen como más votadas digite :1, si por el contrario desea que sea como menos votadas digite 0.\n"))
                decision2=int(input("Sí desea que sus peliculas se ordenen como mejor calificadas con respecto al promedio :1, si por el contrario desea que sean las peor calificadas digite 0.\n"))
                cantidad=input("¿Desea una cantidad por defecto para ambas listas? si/no\n")
                if(cantidad.lower() == "no"):
                    cantidad1=int(input("Digite el tamaño de su ranking peliculas mas votadas/menos votadas:\n"))
                    cantidad2=int(input("Digite el tamaño de su ranking peliculas mejor/peor promedio:\n"))
                    if(decision1 == 1 and decision2 == 1):
                        elementos=fun.crear_ranking_peliculas("mas votadas","mejor calificadas",datos_movies,cantidad1,cantidad2)
                        print("_________________________________________")
                        print("Top",cantidad1,"Peliculas mejor votadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[0])+1):
                            print(x,lt.getElement(elementos[0],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                        print("_________________________________________")
                        print("Top",cantidad2,"Peliculas mejor calificadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[1])+1):
                            print(x,lt.getElement(elementos[1],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                    elif(decision1 == 0  and decision2 == 0):
                        elementos=fun.crear_ranking_peliculas("menos votadas","peor calificadas",datos_movies,cantidad1,cantidad2)
                        print("_________________________________________")
                        print("Top",cantidad1,"Peliculas menos votadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[0])+1):
                            print(x,lt.getElement(elementos[0],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                        print("_________________________________________")
                        print("Top",cantidad2,"Peliculas peor calificadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[1])+1):
                            print(x,lt.getElement(elementos[1],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                    elif(decision1 == 1  and decision2 == 0):
                        elementos=fun.crear_ranking_peliculas("mas votadas","mejor calificadas",datos_movies,cantidad1,cantidad2)
                        print("_________________________________________")
                        print("Top",cantidad1,"Peliculas mejor votadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[0])+1):
                            print(x,lt.getElement(elementos[0],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                        print("_________________________________________")
                        print("Top",cantidad2,"Peliculas peor calificadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[1])+1):
                            print(x,lt.getElement(elementos[1],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                    elif(decision1 == 0  and decision2 == 1):
                        elementos=fun.crear_ranking_peliculas("mas votadas","mejor calificadas",datos_movies,cantidad1,cantidad2)
                        print("_________________________________________")
                        print("Top",cantidad1,"Peliculas menos votadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[0])+1):
                            print(x,lt.getElement(elementos[0],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                        print("_________________________________________")
                        print("Top",cantidad2,"Peliculas mejor calificadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[1])+1):
                            print(x,lt.getElement(elementos[1],i)["titulo"])
                            x+=1
                        print("_________________________________________")
                    
                elif(cantidad.lower() == "si"):
                    if(decision1 == 1 and decision2 == 1):
                        elementos=fun.crear_ranking_peliculas("mas votadas","mejor calificadas",datos_movies)
                        print("_________________________________________")
                        print("Top","10","Peliculas mejor votadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[0])+1):
                            print(x,lt.getElement(elementos[0],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                        print("_________________________________________")
                        print("Top","10","Peliculas mejor calificadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[1])+1):
                            print(x,lt.getElement(elementos[1],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                    elif(decision1 == 0  and decision2 == 0):
                        elementos=fun.crear_ranking_peliculas("menos votadas","peor calificadas",datos_movies)
                        print("_________________________________________")
                        print("Top","10","Peliculas menos votadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[0])+1):
                            print(x,lt.getElement(elementos[0],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                        print("_________________________________________")
                        print("Top","10","Peliculas peor calificadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[1])+1):
                            print(x,lt.getElement(elementos[1],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                    elif(decision1 == 1  and decision2 == 0):
                        elementos=fun.crear_ranking_peliculas("mas votadas","mejor calificadas",datos_movies)
                        print("_________________________________________")
                        print("Top","10","Peliculas mejor votadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[0])+1):
                            print(x,lt.getElement(elementos[0],i)["titulo"])
                            x+=1
                        print("_________________________________________")
                        print("_________________________________________")
                        print("Top","10","Peliculas peor calificadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[1])+1):
                            print(x,lt.getElement(elementos[1],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                    elif(decision1 == 0  and decision2 == 1):
                        elementos=fun.crear_ranking_peliculas("mas votadas","mejor calificadas",datos_movies)
                        print("_________________________________________")
                        print("Top","10","Peliculas menos votadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[0])+1):
                            print(x,lt.getElement(elementos[0],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                        print("_________________________________________")
                        print("Top","10","Peliculas mejor calificadas.")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(elementos[1])+1):
                            print(x,lt.getElement(elementos[1],i)["titulo"])
                            x+=1

                        print("_________________________________________")
                


            elif int(inputs[0])==3: #opcion 3
                director=input("Digite el director que desea buscar:\n")
                conocer_director=fun.conocer_a_director(director,datos_casting,datos_movies)
                print("_________________________________________")
                print("Número de películas:",conocer_director[2],"  ","Promedio de calificación:",conocer_director[1])
                print("_________________________________________")
                x=1
                for i in conocer_director[0]:
                    print(x,i)
                    x+=1
                print("_________________________________________")


            elif int(inputs[0])==4: #opcion 4
                
                actor=input("¿qué actor desea consultar?:\n")
                peliculasxx=fun.conocer_a_actor(datos_movies,datos_casting,actor)
                print("_________________________________________")
                print("Actor:",actor,"Número de películas:",peliculasxx[1],"Promedio de calificación:",peliculasxx[2],"Director con más colaboraciones:",peliculasxx[3])
                print("_________________________________________")
                x=1
                for i in range(1,lt.size(peliculasxx[0])+1):
                    print(x,lt.getElement(peliculasxx[0],i))
                    x+=1
                print("_________________________________________")
                print("Actor:",actor,"Número de películas:",peliculasxx[1],"Promedio de calificación:",peliculasxx[2],"Director con más colaboraciones:",peliculasxx[3])
                print("_________________________________________")
                
                
            elif int(inputs[0])==5: #opcion 5
                genero=input("Elija el género que desea buscar:\n")
                peliculasx=fun.entender_un_genero(genero,datos_movies)
                print("_________________________________________")
                print("Genero:",genero,"con una votación promedio de:",peliculasx[2],"y un número de peliculas de :",lt.size(peliculasx[0]))
                print("_________________________________________")
                x=1
                for i in range(1,lt.size(peliculasx[0])+1):
                    print(x,lt.getElement(peliculasx[0],i))
                    x+=1
                print("Genero:",genero,"con una votación promedio de:",peliculasx[2],"y un número de peliculas de :",lt.size(peliculasx[0]))
                print("_________________________________________")



            elif int(inputs[0])==6: #opcion 6
                genero=input("¿Cuál género desea buscar?:\n")
                ascendente_descendente=input("Sí desea una lista de las mejores peliculas digite:ascendente,si desea una lista de las peores peliculas digite: descendente. \n")
                criterio=input("Elija con que criterio desea realizar su búsqueda, por número de votos digite: votos, para que sea con respecto al promedio digite: promedio. \n")
                deseo=input("¿desea un ranking por defecto(10 películas)?: Si o No:\n")
                tamaño=0
                if(deseo.lower() == "si" ):
                    resultado=fun.crear_ranking_gen(datos_movies,criterio,ascendente_descendente,genero)
                elif(deseo.lower() == "no" ):
                    tamaño=int(input("Elija el número de peliculas que desea para su ranking:\n"))
                    resultado=fun.crear_ranking_gen(datos_movies,criterio,ascendente_descendente,genero,tamaño)
                if(ascendente_descendente == "ascendente"):
                    print("_________________________________________")
                    if(deseo == "si"):
                        print("Top 10 mejores peliculas de:",genero)
                        print("Top,Titulo,Votos,Promedio")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(resultado)+1):
                            print(x,(lt.getElement(resultado,i))["titulo"],",",(lt.getElement(resultado,i))["votos"],",",(lt.getElement(resultado,i))["promedio"])
                            x+=1
                        print("_________________________________________")

                    elif(deseo== "no"):
                        print("top",tamaño,"mejores peliculas de:",genero)
                        print("Top,Titulo,Votos,Promedio")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(resultado)+1):
                            print(x,(lt.getElement(resultado,i))["titulo"],",",(lt.getElement(resultado,i))["votos"],",",(lt.getElement(resultado,i))["promedio"])
                            x+=1
                        print("_________________________________________")
                elif(ascendente_descendente == "descendente"):
                    print("_________________________________________")
                    if(deseo == "si"):
                        print("Top 10 peores peliculas de",genero)
                        print("Top,Titulo,Votos,Promedio")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(resultado)+1):
                            print(x,(lt.getElement(resultado,i))["titulo"],",",(lt.getElement(resultado,i))["votos"],",",(lt.getElement(resultado,i))["promedio"])
                            x+=1
                        print("_________________________________________")

                    elif(deseo== "no"):
                        print("top",tamaño,"peores peliculas de:",genero)
                        print("Top,Titulo,Votos,Promedio")
                        print("_________________________________________")
                        x=1
                        for i in range(1,lt.size(resultado)+1):
                            print(x,(lt.getElement(resultado,i))["titulo"],",",(lt.getElement(resultado,i))["votos"],",",(lt.getElement(resultado,i))["promedio"])
                            x+=1
                        print("_________________________________________")
                        

            elif int(inputs[0])==0: #opcion 0, salir
                sys.exit(0)
def know_actor(actor, listadetails, listacasting):
    t1_start = process_time()  #tiempo inicia
    try:
        listapeliculas = lt.newList("ARRAY_LIST")
        listaid = lt.newList("ARRAY_LIST")
        totalpeliculas = 0
        calificacion = 0
        listadirectores = []

        for i in range(1, int(lt.size(listacasting)) + 1):
            a = (lt.getElement(listacasting, i))["id"]
            if (lt.getElement(listacasting, i))["actor1_name"] == actor:
                lt.addLast(listaid, a)
                listadirectores.append((lt.getElement(listacasting,
                                                      i))["director_name"])
            elif (lt.getElement(listacasting, i))["actor2_name"] == actor:
                lt.addLast(listaid, a)
                listadirectores.append((lt.getElement(listacasting,
                                                      i))["director_name"])
            elif (lt.getElement(listacasting, i))["actor3_name"] == actor:
                lt.addLast(listaid, a)
                listadirectores.append((lt.getElement(listacasting,
                                                      i))["director_name"])
            elif (lt.getElement(listacasting, i))["actor4_name"] == actor:
                lt.addLast(listaid, a)
                listadirectores.append((lt.getElement(listacasting,
                                                      i))["director_name"])
            elif (lt.getElement(listacasting, i))["actor5_name"] == actor:
                lt.addLast(listaid, a)
                listadirectores.append((lt.getElement(listacasting,
                                                      i))["director_name"])

        for i in range(1, (lt.size(listaid)) + 1):
            for j in range(1, int(lt.size(listadetails)) + 1):
                if str(lt.getElement(listaid, i)) == str(
                    (lt.getElement(listadetails, j))["id"]):
                    lt.addLast(listapeliculas, (lt.getElement(listadetails,
                                                              j))["title"])
                    totalpeliculas += 1
                    calificacion += float((lt.getElement(listadetails,
                                                         j))["vote_average"])

        promedio = calificacion / totalpeliculas

        director = mode(listadirectores)

        print("Peliculas del actor: ")
        for i in range(1, (lt.size(listapeliculas)) + 1):
            print(lt.getElement(listapeliculas, i))
        print(
            "-------------------------------------------------------------------"
        )
        print("Numero de peliculas del actor: " + str(totalpeliculas))
        print(
            "-------------------------------------------------------------------"
        )
        print("Promedio de calificacion de peliculas: " +
              str(round(promedio, 2)))
        print(
            "-------------------------------------------------------------------"
        )
        print("Director con mas peliculas: " + str(director))
    except:
        print("Error, nombre incorrecto. Intente de nuevo.")
    t1_stop = process_time()  #tiempo final
    print(
        "-------------------------------------------------------------------")
    print("Tiempo de ejecución ", t1_stop - t1_start, " segundos")
Beispiel #20
0
def mergeSort(lst, lessfunction):
    lstaux = lt.subList(
        lst, 1, lt.size(lst)
    )  #crear una lista auxiliar del mismo tamaNo y con el mismo contenido
    sort(lst, lstaux, lessfunction, 1, lt.size(lst))
Beispiel #21
0
def loadMoviesCasting ():
    lst = loadCSVFile("Data/themoviesdb/MoviesCastingRaw-small.csv",compareRecordIds) 
    print("Datos cargados, " + str(lt.size(lst)) + " elementos cargados")
    return lst
Beispiel #22
0
def main():
    while True:
        printMenu()
        inputs = input('Seleccione una opción para continuar\n')
        if int(inputs[0]) == 1:
            print("Cargando información de los archivos ....")
            print("Recursion Limit:", sys.getrecursionlimit())
            catalog = initCatalog()
            loadData(catalog)
            print('Tamaño Lista libros cargados: ' +
                  str(lt.size(catalog['booksList'])))
            print('Tamaño árbol Libros por titulo: ' +
                  str(map.size(catalog['booksTitleTree'])))
            print('Tamaño árbol Libros por año : ' +
                  str(map.size(catalog['yearsTree'])))
            print('Altura árbol por titulo: ' +
                  str(map.height(catalog['booksTitleTree'])))
            print('Altura árbol por año: ' +
                  str(map.height(catalog['yearsTree'])))
            print('Arbol Accidentes cargados: ' +
                  str(map.size(catalog['AccidentsTree'])))
            print('Lista Accidentes cargados: ' +
                  str(lt.size(catalog['AccidentsList'])))
            print('Altura arbol: ' + str(map.height(catalog['AccidentsTree'])))

        elif int(inputs[0]) == 2:
            print(
                "Para ingresar la fecha, el formato de la misma debe ser: Año-Mes-Día."
                + "\n" +
                "Por ejemplo, si desea buscar el 2 de Agosto de 2016, la entrada sería: 2016-02-08"
            )
            date = input(
                "Ingrese la fecha para la cual desea buscar las severidades: ")
            res = controller.getSeverityByDate(catalog, date)
            if res:
                print(res)
            else:
                print("No se encontraron accidentes para la fecha ", date)

        elif int(inputs[0]) == 6:
            title = input("Nombre del titulo a buscar: ")
            book = controller.getBookTree(catalog, title)
            if book:
                print("Libro encontrado:", book['title'],
                      book['average_rating'])
            else:
                print("Libro No encontrado")
        elif int(inputs[0]) == 3:
            title = input("Nombre del titulo a buscar (rank): ")
            rank = controller.rankBookTree(catalog, title)
            print("Hay ", rank, " titulos menores (rank) que " + title)
        elif int(inputs[0]) == 4:
            pos = int(
                input(
                    "Posición del k-esimo titulo del libro (select) a obtener: "
                ))
            book = controller.selectBookTree(catalog, pos)
            if book:
                print("Libro en posición:", pos, ":", book['value']['title'],
                      book['value']['average_rating'])
            else:
                print("Libro no encotrado en posicion: ", pos)
        elif int(inputs[0]) == 5:
            year = input("Ingrese el año a consultar:")
            response = controller.getBookByYearRating(catalog, year)
            if response:
                print(response)
            else:
                print("No se encontraron libro para el año", year)
        else:
            sys.exit(0)
    sys.exit(0)
Beispiel #23
0
    reader = csv.DictReader(csvfile, delimiter=';')
    for row in reader:
        lt.addLast(lista, row["num"])

#======================================
# Ordenar numeros descendetemente
#======================================


def less(e1, e2):
    return e1 < e2


#=======================================

l = lt.subList(lista, 1, lt.size(lista))
t1_start = process_time()
insertionsort.insertionSort(l, less)
t1_stop = process_time()
# printList(l)
print("InsertionSort:\t", t1_stop - t1_start, " segundos")

#=======================================

l = lt.subList(lista, 1, lt.size(lista))
t1_start = process_time()
selectionsort.selectionSort(l, less)
t1_stop = process_time()
# printList(l)
print("SelectionSort:\t", t1_stop - t1_start, " segundos")
Beispiel #24
0
def categorias(catalog, categoria):
    categorias = catalog["categorias"]
    for i in range(lt.size(categorias)):
        a = lt.getElement(categorias, i)
        if categoria.lower() in a["name"].lower():
            return a["id"]
def loadMovies():
    lst = loadCSVFile("theMoviesdb/SmallMoviesDetailsCleaned.csv",
                      compareRecordIds)
    print("Datos cargados, " + str(lt.size(lst)) + " elementos cargados")
    return lst
Beispiel #26
0
def addActor (catalog, row):
    """
    Adiciona un actor a la lista de actores
    """
    name1=row["actor1_name"]
    name2=row['actor2_name']
    name3=row['actor3_name']
    name4=row['actor4_name']
    name5=row['actor5_name']
    id_m=row['id']
    director=row['director_name']
    movie= None
    average_vote= None

    peliculas= catalog['peliculas_prom']
    size = lt.size(peliculas)
    iterator = it.newIterator(peliculas)
    while  it.hasNext(iterator) and movie==None:
        pelicula = it.next(iterator)
        if pelicula['id']==id_m:
            movie=pelicula['title']
            average_vote=pelicula['vote_average']

    repetido1=0
    repetido2=0
    repetido3=0
    repetido4=0
    repetido5=0
    size = lt.size(catalog['actores'])
    
    if size:
        iterator = it.newIterator(catalog['actores'])
        while  it.hasNext(iterator):
            actor = it.next(iterator)
        
            if name1 == actor["name"]:
                repetido1=1
                updateActor(actor, movie, average_vote, director)
            elif name2 == actor["name"]:
                repetido2=1
                updateActor(actor, movie, average_vote, director)
            elif name3 == actor["name"]:
                repetido3=1
                updateActor(actor, movie, average_vote, director)
            elif name4 == actor["name"]:
                repetido4=1
                updateActor(actor, movie, average_vote, director)
            elif name5 == actor["name"]:
                repetido5=1
                updateActor(actor, movie, average_vote, director)
        
    if repetido1==0 and name1!=None:
        director_mas=director
        a1 = newActor (name1, movie, average_vote, director, director_mas)
        lt.addLast (catalog['actores'], a1)
    if repetido2==0 and name2!=None:
        director_mas=director
        a2 = newActor (name2, movie, average_vote, director, director_mas)
        lt.addLast (catalog['actores'], a2)
    if repetido3==0 and name3!=None:
        director_mas=director
        a3 = newActor (name3, movie, average_vote, director, director_mas)
        lt.addLast (catalog['actores'], a3)
    if repetido4==0 and name4!=None:
        director_mas=director
        a4 = newActor (name4, movie, average_vote, director, director_mas)
        lt.addLast (catalog['actores'], a4)
    if repetido5==0 and name5!=None:
        director_mas=director
        a5 = newActor (name5, movie, average_vote, director, director_mas)
        lt.addLast (catalog['actores'], a5)
Beispiel #27
0
Menu principal
"""
datos_cargados = False
while True:
    printMenu()
    inputs =input('Seleccione una opción para continuar\n')
    if int(inputs[0])==1: # 1- Cargar información
        print("Cargando información de los archivos ....")
        catalog = initCatalog ()
        loadData (catalog)
        """
        print ('Mapa Libros cargados: ' + str(map.size(catalog['booksMap'])))
        print ('Lista Libros cargados: ' + str(lt.size(catalog['booksList'])))
        print ('Autores cargados: ' + str(map.size(catalog['authors'])))
        """
        print ('Lista: Películas cargadas: ' + str(lt.size(catalog['moviesList'])))
        print ('Mapa: Películas cargadas: ' + str(map.size(catalog['moviesMap'])))
        print ('Mapa: Actores cargados: ' + str(map.size(catalog['actors'])))
        print ('Mapa: Directores cargados: ' + str(map.size(catalog['directors'])))
        print ('Mapa: Géneros cargados: ' + str(map.size(catalog['genres'])))

        datos_cargados = True
        
    elif int(inputs[0])==2: # 2- Buscar película por título
        if not datos_cargados:
            """
            bookTitle = input("Nombre del libro a buscar: ")
            book = controller.getBookInfo (catalog, bookTitle)
            if book:
                print("Libro encontrado:",book['title'],",Rating:",book['average_rating'])
            else:
def main():
    """
    Método principal del programa, se encarga de manejar todos los metodos adicionales creados

    Instancia una lista vacia en la cual se guardarán los datos cargados desde el archivo
    Args: None
    Return: None 
    """

    while True:
        printMenu()  #imprimir el menu de opciones en consola
        inputs = input(
            'Seleccione una opción para continuar\n')  #leer opción ingresada
        if len(inputs) > 0:

            if int(inputs[0]) == 1:  #opcion 1
                lstmovies = loadMovies()

            elif int(inputs[0]) == 2:  #opcion 2
                pass

            elif int(inputs[0]) == 3:  #opcion 3

                def cargar_directores(file, sep=";"):
                    lst = lt.newList(
                        'SINGLE_LINKED',
                        comparar_director)  #Usando implementacion linkedlist
                    print("Cargando archivo ....")
                    t1_start = process_time()  #tiempo inicial
                    dialect = csv.excel()
                    dialect.delimiter = sep
                    try:
                        with open(file, encoding="utf-8") as csvfile:
                            spamreader = csv.DictReader(csvfile,
                                                        dialect=dialect)
                            for row in spamreader:

                                director = {}
                                director["nombre"] = row["director_name"]
                                posicion1 = lt.isPresent(
                                    lst, director["nombre"])
                                if posicion1 == 0:
                                    director["peliculas"] = lt.newList()
                                    lt.addLast(director["peliculas"],
                                               row["id"])
                                    lt.addLast(lst, director)
                                else:
                                    directores = lt.getElement(lst, posicion1)
                                    lt.addLast(directores["peliculas"],
                                               row["id"])

                    except:
                        print("Hubo un error con la carga del archivo")
                    t1_stop = process_time()  #tiempo final
                    print("Tiempo de ejecución ", t1_stop - t1_start,
                          " segundos")
                    return lst

                def cargar_peliculas(file, sep=";"):
                    lst = lt.newList('SINGLE_LINKED', comparar_id)
                    print("Cargando archivo ....")
                    #t1_start = process_time() #tiempo inicial
                    dialect = csv.excel()
                    dialect.delimiter = sep
                    try:
                        with open(file, encoding="utf-8") as csvfile:
                            spamreader = csv.DictReader(csvfile,
                                                        dialect=dialect)
                            for row in spamreader:

                                lt.addLast(lst, row)
                    except:
                        print("Hubo un error con la carga del archivo")
                    #t1_stop = process_time() #tiempo final
                    #print("Tiempo de ejecución ",t1_stop-t1_start," segundos")
                    return lst

                lista_directores = cargar_directores(
                    cf.data_dir + "themoviesdb/AllMoviesCastingRaw.csv")
                lista_peliculas = cargar_peliculas(
                    cf.data_dir + "themoviesdb/AllMoviesDetailsCleaned.csv")
                print("longitud de la lista\n")

                nombre_director = input("Ingrese el nombre de un director:\n")
                pos = lt.isPresent(lista_directores, nombre_director)
                directorr = lt.getElement(lista_directores, pos)
                print(
                    "El numero de peliculas dirigidas por el director son:\n",
                    directorr["peliculas"]["size"])
                itera = it.newIterator(directorr["peliculas"])
                average = 0
                while it.hasNext(itera):
                    elemento = it.next(itera)

                    posicion = lt.isPresent(lista_peliculas, elemento)
                    peliculas = lt.getElement(lista_peliculas, posicion)
                    print(peliculas["original_title"])
                    average += float(peliculas["vote_average"])
                promedio = average / directorr["peliculas"]["size"]
                print("El promedio de todas sus peliculas es:\n", promedio)

            elif int(inputs[0]) == 4:  #opcion 4

                def cargar_listaActores(file, sep=";"):
                    lst = lt.newList('SINGLE_LINKED', comparar_actores)

                    dialect = csv.excel()
                    dialect.delimiter = sep
                    nombres_actores = [
                        "actor1_name", "actor2_name", "actor3_name",
                        "actor4_name", "actor5_name"
                    ]
                    try:
                        with open(file, encoding="utf-8") as csvfile:
                            spamreader = csv.DictReader(csvfile,
                                                        dialect=dialect)
                            for row in spamreader:
                                #print(row)

                                # agregar una lista para los directores
                                #directores ={}
                                #directores["director"] =lt.newList('SINGLE_LINKED', comparar_directores)  #lista directores
                                for nombreCol in nombres_actores:
                                    actor = {}
                                    actor["nombre"] = row[nombreCol]

                                    posicion1 = lt.isPresent(
                                        lst, actor["nombre"])
                                    if posicion1 == 0:
                                        actor["peliculas"] = lt.newList(
                                        )  #ids Peliculas del actor
                                        actor["director"] = lt.newList(
                                            'SINGLE_LINKED', comparar_director
                                        )  #lista directores

                                        lt.addLast(actor["peliculas"],
                                                   row["id"])
                                        director = {}
                                        director["nombre"] = row[
                                            "director_name"]
                                        director["count"] = 1

                                        lt.addLast(actor["director"], director)

                                        lt.addLast(lst, actor)
                                    else:
                                        actores = lt.getElement(lst, posicion1)
                                        lt.addLast(actores["peliculas"],
                                                   row["id"])

                                        #validra si ya esta el director o no
                                        pos_director = lt.isPresent(
                                            actores["director"],
                                            row["director_name"])

                                        if pos_director == 0:  # no esta crear director
                                            director = {}
                                            director["nombre"] = row[
                                                "director_name"]
                                            director["count"] = 1

                                            lt.addLast(actores["director"],
                                                       director)
                                        else:  # ya esta ese director aumnetar count en uno
                                            director = lt.getElement(
                                                actores["director"],
                                                pos_director)
                                            director["count"] = director[
                                                "count"] + 1

                    except:
                        print("Hubo un error con la carga del archivo")
                    return lst

                def cargar_peliculas(file, sep=";"):
                    lst = lt.newList('SINGLE_LINKED', comparar_id)
                    print("Cargando archivo ....")
                    #t1_start = process_time() #tiempo inicial
                    dialect = csv.excel()
                    dialect.delimiter = sep
                    try:
                        with open(file, encoding="utf-8") as csvfile:
                            spamreader = csv.DictReader(csvfile,
                                                        dialect=dialect)
                            for row in spamreader:

                                lt.addLast(lst, row)
                    except:
                        print("Hubo un error con la carga del archivo")
                    #t1_stop = process_time() #tiempo final
                    #print("Tiempo de ejecución ",t1_stop-t1_start," segundos")
                    return lst

                listaActores = cargar_listaActores(
                    cf.data_dir + "themoviesdb/AllMoviesCastingRaw.csv")
                listaPelicuas = cargar_peliculas(
                    cf.data_dir + "themoviesdb/AllMoviesDetailsCleaned.csv")

                criterio = input("Nombre del actor : ")
                peliculas_por_actor(listaActores, listaPelicuas, criterio)

            elif int(inputs[0]) == 5:  #opcion 5
                genero = input("Ingrese el genero:\n")
                itera = it.newIterator(lstmovies)
                average = 0
                numero = 0
                lista_peliculas = lt.newList('ARRAY_LIST', cmpfunction=None)
                while it.hasNext(itera):
                    elemento = it.next(itera)
                    if elemento["genres"] is None:
                        pass
                    else:
                        if genero in elemento["genres"]:
                            numero += 1
                            try:
                                average += float(elemento["vote_average"])
                                lt.addLast(lista_peliculas,
                                           elemento["original_title"])
                            except:
                                pass
                promedio = average / numero
                tamano = lt.size(lista_peliculas)
                if tamano == 0:
                    print("No hay peliculas que coincidan con el genero.")
                else:
                    iteraa = it.newIterator(lista_peliculas)
                    while it.hasNext(iteraa):
                        pelicula = it.next(iteraa)
                        print(pelicula)
                print("La cantidad de peliculas de este genero es:", tamano)
                print("El promedio es:", promedio)

            elif int(inputs[0]) == 6:  #opcion 6

                def cargar_peliculas_por_genero(file, sep=";"):
                    lst = lt.newList(
                        'SINGLE_LINKED',
                        comparar_genero)  #Usando implementacion linkedlist
                    print("Cargando archivo ....")
                    dialect = csv.excel()
                    dialect.delimiter = sep

                    with open(file, encoding="utf-8") as csvfile:
                        spamreader = csv.DictReader(csvfile, dialect=dialect)
                        for row in spamreader:

                            generos = row['genres'].split("|")

                            for genero in generos:
                                elemento = {}
                                elemento["genero"] = genero

                                posicion1 = lt.isPresent(
                                    lst, elemento["genero"])
                                if posicion1 == 0:  #  no esta
                                    elemento["peliculas"] = lt.newList(
                                        'SINGLE_LINKED', comparar_pelicula
                                    )  #lista con las peliculas por genero
                                    elemento["sum_Votos"] = int(
                                        row["vote_count"])
                                    elemento["sum_average"] = float(
                                        row["vote_average"])
                                    lt.addLast(elemento["peliculas"],
                                               row["original_title"])
                                    lt.addLast(
                                        lst, elemento
                                    )  # se adiciona a la lista de todos los elemnetos lst
                                else:
                                    elemento_row = lt.getElement(
                                        lst, posicion1)
                                    #revisar si la peicula ya esta
                                    posi_peli = lt.isPresent(
                                        elemento_row['peliculas'],
                                        row["original_title"])
                                    if posi_peli == 0:
                                        lt.addLast(elemento_row["peliculas"],
                                                   row["original_title"])
                                        elemento_row["sum_Votos"] += int(
                                            row["vote_count"])
                                        elemento_row["sum_average"] += float(
                                            row["vote_average"])

                    return lst

                lista_Genero = cargar_peliculas_por_genero(
                    cf.data_dir + "themoviesdb/AllMoviesDetailsCleaned.csv")

                columna = input("1. Por votos, 2. Por promedio\n")
                orden = input("1. Las Mejores , 2. Las peores\n")

                cantidad = input("Numero de peliculas a retornar\n")

                ranking_peliculas_por_genero(lista_Genero, columna, orden,
                                             cantidad)

            elif int(inputs[0]) == 0:  #opcion 0, salir
                sys.exit(0)
def main():
    """
    Método principal del programa, se encarga de manejar todos los metodos adicionales creados

    Instancia una lista vacia en la cual se guardarán los datos cargados desde el archivo
    Args: None
    Return: None 
    """
    lista = lt.newList()  # se require usar lista definida
    while True:
        printMenu()  #imprimir el menu de opciones en consola
        inputs = input(
            'Seleccione una opción para continuar\n')  #leer opción ingresada
        if len(inputs) > 0:
            if int(inputs[0]) == 1:  #opcion 1

                lista = loadCSVFile(
                    "Data/test2.csv",
                    "Data/test3.csv")  #llamar funcion cargar datos
                print("Datos cargados, ", lt.size(lista["Peliculas"]),
                      " elementos cargados")

            elif int(inputs[0]) == 2:  #opcion 2
                if lista == None or lista[
                        'size'] == 0:  #obtener la longitud de la lista
                    print("La lista esta vacía")
                else:
                    print("La lista tiene ", lista['size'], " elementos")
            elif int(inputs[0]) == 3:  #opcion 3
                if lista == None or lista[
                        'size'] == 0:  #obtener la longitud de la lista
                    print("La lista esta vacía")
                else:
                    criteria = input('Ingrese el criterio de búsqueda\n')
                    columna = input('Ingrese la columna de interes\n')
                    counter = countElementsFilteredByColumn(
                        criteria, columna,
                        lista2)  #filtrar una columna por criterio
                    print("Coinciden ", counter,
                          " elementos con el crtierio: ", criteria)
            elif int(inputs[0]) == 4:  #opcion 4
                if lista == None or lista[
                        'size'] == 0:  #obtener la longitud de la lista
                    print("La lista esta vacía")
                else:
                    criteria = input('Ingrese el criterio de búsqueda\n')
                    counter = countElementsByCriteria(criteria,
                                                      "director_name", lista2,
                                                      lista)
                    print("Coinciden ", counter,
                          " elementos con el crtierio: '", criteria,
                          "' (en construcción ...)")
            elif int(inputs[0]) == 5:  #opcion 5
                if lista == None or lista[
                        'size'] == 0:  #obtener la longitud de la lista
                    print("La lista esta vacía")
                else:
                    column = input('Ingrese la columna a organizar\n')
                    elements = input('Ingrese el numero de datos a mostrar\n')
                    function = input(
                        "ingrese si quiere los datos acendentes o decendentes\n"
                    )
                    organizar = orderElementsByCriteria(
                        function, column, lista, elements)
                    print("estos son los primeros", elements,
                          "elementos de la lista de acuerdo a", column, ":",
                          organizar)
            elif int(inputs[0]) == 0:  #opcion 0, salir
                sys.exit(0)
def loadMovies():
    lst = loadCSVFile("theMoviesdb/movies-small.csv", compareRecordIds)
    print("Datos cargados, " + str(lt.size(lst)) + " elementos cargados")
    return lst