Ejercicio: 3Eva_IIT2017_T2 biblioteca videojuegos
Propuesta de solución en Python:
archivo de prueba: videojuegos.csv
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL # 3Eva_IIT2017_T2 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) # PROGRAMA --------------------------- # 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)