Ejercicio: 3Eva2017TII_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)