{"id":5198,"date":"2018-02-24T17:54:16","date_gmt":"2018-02-24T22:54:16","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=5198"},"modified":"2026-09-21T15:39:55","modified_gmt":"2026-09-21T20:39:55","slug":"s3eva2017tii_t2-biblioteca-videojuegos","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s3eva20\/s3eva2017tii_t2-biblioteca-videojuegos\/","title":{"rendered":"s3Eva2017TII_T2 biblioteca videojuegos"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva20\/3eva2017tii_t2-biblioteca-videojuegos\/\" data-type=\"post\" data-id=\"5194\">3Eva2017TII_T2 biblioteca videojuegos<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"747\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2018\/02\/bibliotecaVideoJuegos01.jpg\" alt=\"Lista de video juegos ejemplo\" class=\"wp-image-25832\" style=\"width:350px\" \/><\/figure>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>:<\/p>\n\n\n\n<p>archivo de prueba: <a href=\"https:\/\/www.dropbox.com\/s\/tla0sjyhh5lbugt\/videojuegos.csv?dl=0\">videojuegos.csv<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal a<\/h2>\n\n\n\n<p>La funci\u00f3n <strong>juegosConsolas<\/strong>(<em>nomArchivo<\/em>, <em>categoria<\/em>, <em>decada<\/em>) que recibe el nombre del <strong>archivo<\/strong> con la informaci\u00f3n de los videojuegos, una <strong><code>categor\u00eda<\/code><\/strong> y n\u00famero de cuatro d\u00edgitos representando una d\u00e9cada de <code><strong>a\u00f1os<\/strong><\/code>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 13; highlight: [22,26]; title: ; notranslate\" title=\"\">\n    archivo = open(nomArchivo,'r')\n    # encabezado\n    linea = archivo.readline()\n    # primera linea de datos\n    linea = archivo.readline()\n    while not(linea==''):\n        linea  = linea.strip('\\n')\n        partes = linea.split(',')\n        njuego = partes&#x5B;0]\n        anio   = int(partes&#x5B;1])\n        cons   = partes&#x5B;2]\n        calf   = float(partes&#x5B;3])\n        lista  = partes&#x5B;4].split(';')\n        categ  = lista&#x5B;0]\n        tags   = lista&#x5B;1:]\n<\/pre><\/div>\n\n\n<p>La funci\u00f3n retorna una tupla con 2 elementos. El primer elemento es la lista con los valores \u00fanicos\u00a0 de todos lo juegos de esa d\u00e9cada para esa categor\u00eda. El segundo elemento es la lista con valores \u00fanicos de todas las consolas que tienen juegos para esa <code><strong>d\u00e9cada y categor\u00eda<\/strong><\/code>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 30; highlight: [30,31,32]; title: ; notranslate\" title=\"\">\n        if (anio&gt;=decada\n            and anio&lt;=(decada+10)\n            and (categ==categoria)):\n            \n            if not(njuego in productos):\n                productos.append(njuego)\n            if not(cons in equipos):\n                equipos.append(cons)\n            listado.append(&#x5B;njuego,cons,calf])\n<\/pre><\/div>\n\n\n<p>Por ejemplo, para llamar a <code>juegosConsolas('videojuegos.csv','RPG',1980)<\/code> retorna:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(&#091;'The legend of Zelda',\u00a0 'Phantasy Star', ...], &#091;'NES', 'Famicon Disk System', ...])<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>La funci\u00f3n <code>crearMatriz(nomArchivo, categoria, decada)<\/code> que recibe el nombre del archivo con la informaci\u00f3n de los videojuegos, el nombre de una categor\u00eda de videojuegos y un n\u00famero de cuatro d\u00edgitos representando una d\u00e9cada de a\u00f1os.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 48; title: ; notranslate\" title=\"\">\n    indices = juegosConsolas(nomArchivo,\n                             categoria,\n                             decada)\n    filas    = indices&#x5B;0]\n    columnas = indices&#x5B;1]\n    datos    = indices&#x5B;2]\n    n = len(filas)\n    m = len(columnas)\n<\/pre><\/div>\n\n\n<p>La funci\u00f3n deber\u00e1 leer el archivo y retornar una <code><strong>matriz<\/strong><\/code> donde las <code><strong>filas<\/strong><\/code> representan los juegos de categor\u00eda para la d\u00e9cada , las <code><strong>columnas<\/strong><\/code> representan las consolas que tienen juegos de categor\u00eda para la d\u00e9cada y las celdas son las calificaciones de cada juego para cada consola. Si un juego no existe para una consola, su calificaci\u00f3n deber\u00e1 ser cero (0).<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 56; highlight: [60,61,63]; title: ; notranslate\" title=\"\">\n    matriz = np.zeros(shape=(n,m), dtype=float)\n    q = len(datos)\n    \n    for i in range(0,q,1):\n        f = filas.index(datos&#x5B;i]&#x5B;0])\n        c = columnas.index(datos&#x5B;i]&#x5B;1])\n        valor = datos&#x5B;i]&#x5B;2]\n        matriz&#x5B;f,c] = valor\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">literal c<\/h2>\n\n\n\n<p>La funci\u00f3n mejoresJuegos(nomArchivo, categoria, decada) que recibe el nombre del archivo con la informaci\u00f3n de los videojuegos, el nombre de una categor\u00eda de videojuegos y un n\u00famero de cuatro d\u00edgitos representando una d\u00e9cada de a\u00f1os.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 69; title: ; notranslate\" title=\"\">\n    indices  = juegosConsolas(nomArchivo,\n                              categoria,\n                              decada)\n    matriz   = crearMatriz(nomArchivo,\n                           categoria,\n                           decada)\n    subtotal = np.sum(matriz, axis=0)\n    conteo   = np.count_nonzero(matriz,axis=0)\n    prom = subtotal\/conteo\n<\/pre><\/div>\n\n\n<p>La funci\u00f3n deber\u00e1 generar el archivo \u201cMejores.txt\u201d con los cinco mejores juegos de la d\u00e9cada para la categor\u00eda, ordenados de mayor a menor por su calificaci\u00f3n promedio. Para calcular el promedio de un juego, considere \u00fanicamente las consolas en las que fue lanzado (no considere los valores cero). El archivo tendr\u00e1 la siguiente estructura:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NombreNombre,Promedio_calificaci\u00f3n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo en Python<\/h2>\n\n\n\n<p>El algoritmo con las partes integradas es:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# CCPG1001-Fundamentos de Programaci\u00f3n - FIEC-ESPOL\n# 3Eva_IIT2017_T2 biblioteca videojuegos\n\nimport numpy as np\n\n# litera a\ndef juegosConsolas(nomArchivo, categoria, decada):\n    productos = &#x5B;]\n    equipos   = &#x5B;]\n    listado   = &#x5B;]\n    if (decada&gt;99):\n        decada = decada%100\n    \n    archivo = open(nomArchivo,'r')\n    # encabezado\n    linea = archivo.readline()\n    # primera linea de datos\n    linea = archivo.readline()\n    while not(linea==''):\n        linea  = linea.strip('\\n')\n        partes = linea.split(',')\n        njuego = partes&#x5B;0]\n        anio   = int(partes&#x5B;1])\n        cons   = partes&#x5B;2]\n        calf   = float(partes&#x5B;3])\n        lista  = partes&#x5B;4].split(';')\n        categ  = lista&#x5B;0]\n        tags   = lista&#x5B;1:]\n        \n        if (anio&gt;=decada\n            and anio&lt;=(decada+10)\n            and (categ==categoria)):\n            \n            if not(njuego in productos):\n                productos.append(njuego)\n            if not(cons in equipos):\n                equipos.append(cons)\n            listado.append(&#x5B;njuego,cons,calf])\n            \n        linea = archivo.readline()\n    archivo.close()\n    respuesta = (productos,equipos, listado)\n    \n    return(respuesta)\n\n# literal b\ndef crearMatriz(nomArchivo, categoria, decada):\n    indices = juegosConsolas(nomArchivo,\n                             categoria,\n                             decada)\n    filas    = indices&#x5B;0]\n    columnas = indices&#x5B;1]\n    datos    = indices&#x5B;2]\n    n = len(filas)\n    m = len(columnas)\n    matriz = np.zeros(shape=(n,m), dtype=float)\n    q = len(datos)\n    \n    for i in range(0,q,1):\n        f = filas.index(datos&#x5B;i]&#x5B;0])\n        c = columnas.index(datos&#x5B;i]&#x5B;1])\n        valor = datos&#x5B;i]&#x5B;2]\n        matriz&#x5B;f,c] = valor\n        \n    return(matriz)\n\n# literal c\ndef mejoresJuegos(nomArchivo, categoria, decada):\n    indices  = juegosConsolas(nomArchivo,\n                              categoria,\n                              decada)\n    matriz   = crearMatriz(nomArchivo,\n                           categoria,\n                           decada)\n    subtotal = np.sum(matriz, axis=0)\n    conteo   = np.count_nonzero(matriz,axis=0)\n    prom = subtotal\/conteo\n    \n    indicesMax = prom.argsort()&#x5B;-5::]\n    n = len(indicesMax)\n\n    narchivo = 'Mejores.txt'\n    archivo = open(narchivo,'w')\n    for i in range(0,n,1):\n        cual = indicesMax&#x5B;i]\n        linea = indices&#x5B;1]&#x5B;cual] + ',' + str(prom&#x5B;cual]) + '\\n'\n        archivo.write(linea)\n    archivo.close()\n    \n    respuesta = 'archivo creado'\n    return(respuesta)\n\n# literal d\ndef colecciones(nomArchivo, palabras):\n    respuesta = &#x5B;]\n    \n    archivo = open(nomArchivo,'r')\n    # encabezado\n    linea = archivo.readline()\n\n    # primera linea de datos\n    linea = archivo.readline()\n\n    while not(linea==''):\n        linea  = linea.strip('\\n')\n        partes = linea.split(',')\n        lista  = partes&#x5B;4].split(';')\n        categ  = lista&#x5B;0]\n        tags   = lista&#x5B;1:]\n        if (palabras == tags):\n            if not(njuego  in respusta):\n                respuesta.append(njuego)\n    \n    return(respuesta)\n\n# PROGRAMA ---------------------------\n# INGRESO\nnomArchivo = 'videojuegos.csv'\ncategoria  = 'RPG'\ndecada = 80\n\n# PROCEDIMIENTO\nrespuesta1 = juegosConsolas(nomArchivo, categoria, decada)\nrespuesta2 = crearMatriz(nomArchivo, categoria, decada)\nrespuesta3 = mejoresJuegos(nomArchivo, categoria, decada)\n\n# SALIDA\nprint('juegos y consolas de: ', decada, categoria)\nprint(respuesta1&#x5B;0])\nprint(respuesta1&#x5B;1])\nprint('matriz: ')\nprint(respuesta2)\nprint('seleccionados: ')\nprint(respuesta3)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2017TII_T2 biblioteca videojuegos Propuesta de soluci\u00f3n en Python: archivo de prueba: videojuegos.csv literal a La funci\u00f3n juegosConsolas(nomArchivo, categoria, decada) que recibe el nombre del archivo con la informaci\u00f3n de los videojuegos, una categor\u00eda y n\u00famero de cuatro d\u00edgitos representando una d\u00e9cada de a\u00f1os. La funci\u00f3n retorna una tupla con 2 elementos. El primer elemento [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-fp-ejemplos","format":"standard","meta":{"footnotes":""},"categories":[143],"tags":[58,157],"class_list":["post-5198","post","type-post","status-publish","format-standard","hentry","category-fp-s3eva20","tag-ejemplos-python","tag-fundamentos-programacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=5198"}],"version-history":[{"count":9,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5198\/revisions"}],"predecessor-version":[{"id":25839,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5198\/revisions\/25839"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=5198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=5198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=5198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}