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)