s3Eva_IIT2017_T2 biblioteca videojuegos

Propuesta de solución en Python:

archivo de prueba: videojuegos.csv

# 3ra Evaluación II Término 2017
# Tema 2. biblioteca videojuegos

import numpy as np

def juegosConsolas(nomArchivo, categoria, decada):
    productos = []
    equipos = []
    listado = []
    if (decada>99):
        decada = decada%100
    archivo = open(nomArchivo,'r')
    # encabezado
    linea = archivo.readline()
    # primera linea de datos
    linea = archivo.readline()
    while not(linea==''):
        linea = linea.strip('\n')
        partes = linea.split(',')
        njuego = partes[0]
        anio = int(partes[1])
        cons = partes[2]
        calf = float(partes[3])
        lista = partes[4].split(';')
        categ = lista[0]
        tags = lista[1:]
        if (anio>=decada and anio<=(decada+10) and (categ==categoria)):
            if not(njuego in productos):
                productos.append(njuego)
            if not(cons in equipos):
                equipos.append(cons)
            listado.append([njuego,cons,calf])
        linea = archivo.readline()
    archivo.close()
    respuesta = (productos,equipos, listado)
    return(respuesta)

def crearMatriz(nomArchivo, categoria, decada):
    indices = juegosConsolas(nomArchivo, categoria, decada)
    filas = indices[0]
    columnas = indices[1]
    datos = indices[2]
    n = len(filas)
    m = len(columnas)
    matriz = np.zeros(shape=(n,m), dtype=float)
    q = len(datos)
    for i in range(0,q,1):
        f = filas.index(datos[i][0])
        c = columnas.index(datos[i][1])
        valor = datos[i][2]
        matriz[f,c] = valor
    return(matriz)

def mejoresJuegos(nomArchivo, categoria, decada):
    indices = juegosConsolas(nomArchivo, categoria, decada)
    matriz = crearMatriz(nomArchivo, categoria, decada)
    subtotal = np.sum(matriz, axis=0)
    conteo = np.count_nonzero(matriz,axis=0)
    prom = subtotal/conteo
    indicesMax = prom.argsort()[-5::]
    n = len(indicesMax)
    narchivo = 'Mejores.txt'
    archivo = open(narchivo,'w')
    for i in range(0,n,1):
        cual = indicesMax[i]
        linea = indices[1][cual] + ',' + str(prom[cual]) + '\n'
        archivo.write(linea)
    archivo.close()
    respuesta = 'archivo creado'
    return(respuesta)

def colecciones(nomArchivo, palabras):
    respuesta = []
    archivo = open(nomArchivo,'r')
    # encabezado
    linea = archivo.readline()
    # primera linea de datos
    linea = archivo.readline()
    while not(linea==''):
        linea = linea.strip('\n')
        partes = linea.split(',')
        lista = partes[4].split(';')
        categ = lista[0]
        tags = lista[1:]
        if (palabras == tags):
            if not(njuego  in respusta):
                respuesta.append(njuego)
    return(respuesta)

# INGRESO
nomArchivo = 'videojuegos.csv'
categoria = 'RPG'
decada = 80

# PROCEDIMIENTO
respuesta1 = juegosConsolas(nomArchivo, categoria, decada)
respuesta2 = crearMatriz(nomArchivo, categoria, decada)
respuesta3 = mejoresJuegos(nomArchivo, categoria, decada)

# SALIDA
print('juegos y consolas de: ', decada, categoria)
print(respuesta1[0])
print(respuesta1[1])
print('matriz: ')
print(respuesta2)
print('seleccionados: ')
print(respuesta3)