{"id":5179,"date":"2018-02-15T10:19:53","date_gmt":"2018-02-15T15:19:53","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=5179"},"modified":"2025-12-24T19:53:04","modified_gmt":"2025-12-25T00:53:04","slug":"s2eva2017tii_t2-reporte-comercio-internacional","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-ejemplos\/fp-s2e20\/s2eva2017tii_t2-reporte-comercio-internacional\/","title":{"rendered":"s2Eva2017TII_T2 reporte comercio internacional"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-evalua\/fp-2e20\/2eva2017tii_t2-reporte-comercio-internacional\/\" data-type=\"post\" data-id=\"5163\">2Eva2017TII_T2 Reporte comercio internacional<\/a><\/p>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>:<\/p>\n\n\n\n<p>archivos usados: <a href=\"https:\/\/www.dropbox.com\/s\/3fxl4o0ndwow4ar\/Flores.txt?dl=0\">Flores.txt<\/a>,&nbsp; <a href=\"https:\/\/www.dropbox.com\/s\/u8wi351jvsajl14\/Maderas.txt?dl=0\">Maderas.txt<\/a><br>para obtener respuestas: <a href=\"https:\/\/www.dropbox.com\/s\/c4d9whzawwu2ncn\/categoriasconsolidado.txt?dl=0\">categoriasconsolidado.txt<\/a>, <a href=\"https:\/\/www.dropbox.com\/s\/ki9st8vaa6cfxqy\/totalFlores.txt?dl=0\">totalFlores<\/a>, <a href=\"https:\/\/www.dropbox.com\/s\/ciomxhythsb6ryd\/totalMaderas.txt?dl=0\">totalMaderas<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>totales de:  Flores\n{('Estados Unidos', 'Ecuador', 'rosas'): 118568,\n ('Holanda', 'Japon', 'tulipanes'): 2384,\n ('Estados Unidos', 'Ecuador', 'girasoles'): 38284}\n*** Consolidando productos:  Archivos consolidados guardados\nresultados de funcion crearMatriz(): \n(array(&#091;&#091; 38284, 118568,      0,  69284,  69284,  48284],\n       &#091;     0,      0,   2384,      0,   3384,      0]]),\n       &#091;'Ecuador', 'Japon'],\n       &#091;'girasoles', 'rosas', 'tulipanes', 'abeto', 'cereso', 'teca'],\n       {'Flores': &#091;'girasoles', 'rosas', 'tulipanes'], \n'Maderas': &#091;'abeto', 'cereso', 'teca']})\n*** Ventas por categoria son:  Archivos venta por categoria guardados\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<p>Algoritmo en Python:<\/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# 2Eva_IIT2017_T2 reporte comercio internacional\nimport numpy as np\n\ndef calculaTotales(categoria):\n    totales = {}\n\n    narchivo = categoria + '.txt'\n    archivo  = open(narchivo,'r')\n\n    # Linea de 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        indice = (partes&#x5B;0],partes&#x5B;1],partes&#x5B;2])\n        cantidad = int(partes&#x5B;3])\n        valor = float(partes&#x5B;4])\n\n        if indice in totales:\n            totales&#x5B;indice] = totales&#x5B;indice] + cantidad\n        else:\n            totales&#x5B;indice] = cantidad\n        linea = archivo.readline()\n    archivo.close()\n\n    return(totales)\n\ndef consolidado(nomArchivo,categorias):\n    archivo = open(nomArchivo, 'w')\n    for unacat in categorias:\n        total = calculaTotales(unacat)\n\n        # totales.update(total)\n        for indice in total:\n            comp = indice&#x5B;0] \n            vend = indice&#x5B;1]\n            cate = unacat\n            prod = indice&#x5B;2]\n            cant = total&#x5B;indice]\n            linea = comp + ',' + vend + ','\n            linea = linea + cate + ',' + prod\n            linea = linea + ',' + str(cant) + '\\n'\n            archivo.write(linea)\n            \n    archivo.close()\n\n    respuesta = 'Archivos consolidados guardados'\n    return(respuesta)\n\ndef ventasCategorias(nomArchivo, dicCat):\n    # Por simplicidad, supone que el orden\n    # en dicCat es el mismo que en\n    # lista productos\n    # Tarea: seleccionar los 5 vendedores mas bajos\n\n    paisproducto = crearMatriz(nomArchivo)\n    matriz     = paisproducto&#x5B;0]\n    vendedores = paisproducto&#x5B;1]\n    productos  = paisproducto&#x5B;2]\n    categorias = dicCat.keys()\n\n    a = 0\n    for categ in categorias:\n        incluye = dicCat&#x5B;categ]\n        k = len(incluye)\n        b = a + k\n        seccion = matriz&#x5B;:,a:b]\n        suma = np.sum(seccion, axis=1)\n        a = a + k\n        \n        unifica = &#x5B;]\n        for f in range(0,len(vendedores),1):\n            unifica.append(&#x5B;vendedores&#x5B;f],suma&#x5B;f]])\n\n        narchivo = 'total'+categ+'.txt'\n        archivo = open(narchivo,'w')\n        for f in range(0,len(unifica),1):\n            linea = unifica&#x5B;f]&#x5B;0]+','+str(unifica&#x5B;f]&#x5B;1])+'\\n'\n            archivo.write(linea)\n        archivo.close()\n\n    respuesta = 'Archivos venta por categoria guardados'\n    return(respuesta)\n\n# El examen supone que esta funci\u00f3n ya existe.\n# adicionalmete crea dicCat para hacer funcional el problema\ndef crearMatriz(nomArchivo):\n    # Obtiene los indices para la matriz\n    vendedores = &#x5B;]\n    categoria = {}\n    lista = &#x5B;]\n\n    archivo = open(nomArchivo,'r')\n    linea = archivo.readline()\n    while not(linea==''):\n        linea = linea.strip('\\n')\n        partes =  linea.split(',')\n        unvendedor = partes&#x5B;1]\n        unacategoria = partes&#x5B;2]\n        unproducto = partes&#x5B;3]\n        cant = int(partes&#x5B;4])\n\n        if not(unvendedor in vendedores):\n            vendedores.append(unvendedor)\n        if not(unacategoria in categoria):\n            categoria&#x5B;unacategoria] = &#x5B;unproducto]\n        else:\n            if not(unproducto in categoria&#x5B;unacategoria]):\n                categoria&#x5B;unacategoria].append(unproducto)\n        lista.append(&#x5B;unvendedor,unproducto,cant])\n        linea = archivo.readline()\n    archivo.close()\n\n    # Ordena los productos alfabeticamente\n    productos = &#x5B;]\n    for unacategoria in categoria:\n        prod = categoria&#x5B;unacategoria]\n        prod.sort()\n        categoria&#x5B;unacategoria] = prod\n        productos = productos + prod\n\n    # Crea la matriz\n    n = len(vendedores)\n    m = len(productos)\n    matriz = np.zeros(shape=(n,m),dtype=int)\n    k = len(lista)\n    for i in range(0,k,1):\n        fila = vendedores.index(lista&#x5B;i]&#x5B;0])\n        columna = productos.index(lista&#x5B;i]&#x5B;1])\n        matriz&#x5B;fila,columna] = matriz&#x5B;fila,columna] + lista&#x5B;i]&#x5B;2]\n    respuesta = (matriz, vendedores, productos,categoria)\n    return(respuesta)\n\n# PROGRAMA\n# INGRESO datos prueba\ncategoria = 'Flores'\ncategorias = &#x5B;'Flores','Maderas']\nnomArchivo = 'categoriasconsolidado.txt'\n\n# PROCEDIMIENTO\ntotales = calculaTotales(categoria)\nconsolidaprod = consolidado(nomArchivo, categorias)\npaisproducto = crearMatriz(nomArchivo)\ndicCat = paisproducto&#x5B;3]\nventacat = ventasCategorias(nomArchivo, dicCat)\n\n# SALIDA\nprint('totales de: ', categoria)\nprint(totales)\nprint('*** Consolidando productos: ', consolidaprod)\nprint('resultados de funcion crearMatriz(): ')\nprint(paisproducto)\nprint('*** Ventas por categoria son: ', ventacat)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 2Eva2017TII_T2 Reporte comercio internacional Propuesta de soluci\u00f3n en Python: archivos usados: Flores.txt,&nbsp; Maderas.txtpara obtener respuestas: categoriasconsolidado.txt, totalFlores, totalMaderas Algoritmo en Python:<\/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":[136],"tags":[58,157],"class_list":["post-5179","post","type-post","status-publish","format-standard","hentry","category-fp-s2e20","tag-ejemplos-python","tag-fundamentos-programacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5179","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=5179"}],"version-history":[{"count":3,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5179\/revisions"}],"predecessor-version":[{"id":19173,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5179\/revisions\/19173"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=5179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=5179"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=5179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}