Ejercicio: 2Eva_IIT2017_T2 Reporte comercio internacional
Propuesta de solución en Python:
archivos usados: Flores.txt, Maderas.txt
para obtener respuestas: categoriasconsolidado.txt, totalFlores, totalMaderas
totales de: Flores {('Estados Unidos', 'Ecuador', 'rosas'): 118568, ('Holanda', 'Japon', 'tulipanes'): 2384, ('Estados Unidos', 'Ecuador', 'girasoles'): 38284} *** Consolidando productos: Archivos consolidados guardados resultados de funcion crearMatriz(): (array([[ 38284, 118568, 0, 69284, 69284, 48284], [ 0, 0, 2384, 0, 3384, 0]]), ['Ecuador', 'Japon'], ['girasoles', 'rosas', 'tulipanes', 'abeto', 'cereso', 'teca'], {'Flores': ['girasoles', 'rosas', 'tulipanes'], 'Maderas': ['abeto', 'cereso', 'teca']}) *** Ventas por categoria son: Archivos venta por categoria guardados >>>
Instrucciones en Python:
# CCPG1001-Fundamentos de programación FIEC-ESPOL # 2Eva_IIT2017_T2 reporte comercio internacional import numpy as np def calculaTotales(categoria): totales = {} narchivo = categoria + '.txt' archivo = open(narchivo,'r') # Linea de encabezado linea = archivo.readline() # Primera linea de datos linea = archivo.readline() while not(linea ==''): linea = linea.strip('\n') partes = linea.split(',') indice = (partes[0],partes[1],partes[2]) cantidad = int(partes[3]) valor = float(partes[4]) if indice in totales: totales[indice] = totales[indice] + cantidad else: totales[indice] = cantidad linea = archivo.readline() archivo.close() return(totales) def consolidado(nomArchivo,categorias): archivo = open(nomArchivo, 'w') for unacat in categorias: total = calculaTotales(unacat) # totales.update(total) for indice in total: comp = indice[0] vend = indice[1] cate = unacat prod = indice[2] cant = total[indice] linea = comp + ',' + vend + ',' linea = linea + cate + ',' + prod linea = linea + ',' + str(cant) + '\n' archivo.write(linea) archivo.close() respuesta = 'Archivos consolidados guardados' return(respuesta) def ventasCategorias(nomArchivo, dicCat): # Por simplicidad, supone que el orden # en dicCat es el mismo que en # lista productos # Tarea: seleccionar los 5 vendedores mas bajos paisproducto = crearMatriz(nomArchivo) matriz = paisproducto[0] vendedores = paisproducto[1] productos = paisproducto[2] categorias = dicCat.keys() a = 0 for categ in categorias: incluye = dicCat[categ] k = len(incluye) b = a + k seccion = matriz[:,a:b] suma = np.sum(seccion, axis=1) a = a + k unifica = [] for f in range(0,len(vendedores),1): unifica.append([vendedores[f],suma[f]]) narchivo = 'total'+categ+'.txt' archivo = open(narchivo,'w') for f in range(0,len(unifica),1): linea = unifica[f][0]+','+str(unifica[f][1])+'\n' archivo.write(linea) archivo.close() respuesta = 'Archivos venta por categoria guardados' return(respuesta) # El examen supone que esta función ya existe. # adicionalmete crea dicCat para hacer funcional el problema def crearMatriz(nomArchivo): # Obtiene los indices para la matriz vendedores = [] categoria = {} lista = [] archivo = open(nomArchivo,'r') linea = archivo.readline() while not(linea==''): linea = linea.strip('\n') partes = linea.split(',') unvendedor = partes[1] unacategoria = partes[2] unproducto = partes[3] cant = int(partes[4]) if not(unvendedor in vendedores): vendedores.append(unvendedor) if not(unacategoria in categoria): categoria[unacategoria] = [unproducto] else: if not(unproducto in categoria[unacategoria]): categoria[unacategoria].append(unproducto) lista.append([unvendedor,unproducto,cant]) linea = archivo.readline() archivo.close() # Ordena los productos alfabeticamente productos = [] for unacategoria in categoria: prod = categoria[unacategoria] prod.sort() categoria[unacategoria] = prod productos = productos + prod # Crea la matriz n = len(vendedores) m = len(productos) matriz = np.zeros(shape=(n,m),dtype=int) k = len(lista) for i in range(0,k,1): fila = vendedores.index(lista[i][0]) columna = productos.index(lista[i][1]) matriz[fila,columna] = matriz[fila,columna] + lista[i][2] respuesta = (matriz, vendedores, productos,categoria) return(respuesta) # PROGRAMA # INGRESO datos prueba categoria = 'Flores' categorias = ['Flores','Maderas'] nomArchivo = 'categoriasconsolidado.txt' # PROCEDIMIENTO totales = calculaTotales(categoria) consolidaprod = consolidado(nomArchivo, categorias) paisproducto = crearMatriz(nomArchivo) dicCat = paisproducto[3] ventacat = ventasCategorias(nomArchivo, dicCat) # SALIDA print('totales de: ', categoria) print(totales) print('*** Consolidando productos: ', consolidaprod) print('resultados de funcion crearMatriz(): ') print(paisproducto) print('*** Ventas por categoria son: ', ventacat)