s2Eva_IIT2016_T3 Prueba de Escritorio – conjuntos, operaciones, diferencia simétrica
s2Eva_IIT2016_T2 País destino para jubilados extranjeros
Ejercicio: 2Eva_IIT2016_T2 País destino para jubilados extranjeros
Propuesta de solución en Python:
requiere usar el archivo: destinosdatos.txt
# CCPG1001-Fundamentos de programación FIEC-ESPOL # 2Eva_IIT2016_T2 País destino para jubilados extranjeros def cargarDatos(nomFile): datos = {} archivo = open(nomFile, 'r') linea = archivo.readline() while not(linea==''): linea = linea.strip('\n') partes = linea.split(',') ciu = partes[0] met = partes[1] val = float(partes[2]) if not(ciu in datos): datos[ciu] = {met:val} else: datos[ciu][met]= val linea = archivo.readline() archivo.close() return(datos) def metricaPais(datos, paises): promedios = {} for unpais in paises: totalcanasta = 0 totaltemperatura = 0 ciudades = paises[unpais] for unaciudad in ciudades: unacanasta = datos[unaciudad]['canastaBasica'] totalcanasta = totalcanasta + unacanasta unatemp = datos[unaciudad]['temperatura'] totaltemperatura = totaltemperatura + unatemp # los promedios son por pais promediocanasta = totalcanasta/len(ciudades) promediotemperatura = totaltemperatura/len(ciudades) promedios[unpais] = {'canastaBasica': promediocanasta, 'temperatura': promediotemperatura} return(promedios) def generaPaises(promedios, metrica, minimo, maximo): narchivo = 'cumplencon.csv' archivo = open(narchivo, 'w') for unpais in promedios: valor = promedios[unpais][metrica] if (valor>=minimo and valor<=maximo): linea = unpais +'\n' archivo.write(linea) archivo.close mensaje = 'resultados en archivo' return(mensaje) # PROGRAMA Prueba # INGRESO paises = {'Ecuador':{'Cuenca','Guayaquil'}, 'Colombia':{'Bogotá'}} nomFile = 'destinosdatos.txt' metrica = input('cual metrica: ') minimo = float(input('minimo: ')) maximo = float(input('maximo: ')) # PROCEDIMIENTO tabla = cargarDatos(nomFile) promedios = metricaPais(tabla, paises) cualescumplen = generaPaises(promedios, metrica, minimo, maximo) # SALIDA print('tabla de datos: ') print(tabla) print('paises') print(paises) print('promedios de características') print(promedios) print('paises de interes para el jubilado, en archivo')
s2Eva_IIT2016_T1 Multas de Transito por sector
Ejercicio: 2Eva_IIT2016_T1 Multas de Transito por sector
Propuesta de solución en Python:
# CCPG1001-Fundamentos de programación # 2Eva_IIT2016_T1 Multas de Transito por sector import numpy as np def generaMatriz(listamultas,sectores): n = len(sectores) unafila = sectores[0] m = len(unafila) matriz = np.zeros(shape=(n,m),dtype=float) k = len(listamultas) i = 0 while not(i>=k): f = listamultas[i][0] c = listamultas[i][1] valor = listamultas[i][2] matriz[f,c] = matriz[f,c] + valor i = i+1 return(matriz) def sectorTop(matriz): # TAREA: Realizar para este y oeste tamano = np.shape(matriz) n = tamano[0] m = tamano[1] norte = matriz[0,:] sur = matriz[n-1,:] centro = matriz[1:3,2] rnorte = np.sum(norte) rsur = np.sum(sur) rcentro = np.sum(centro) suma = [rnorte,rsur,rcentro] referencia = ['norte','sur','centro'] cual = np.argmax(suma) nombre = referencia[cual] valor = suma[cual] respuesta = [nombre,valor] return(respuesta) # PROGRAMA # INGRESO sectores = [ ['Norte','Norte','Norte','Norte','Norte'], ['Oeste','Oeste','Centro','Este','Este'], ['Oeste','Oeste','Centro','Este','Este'], ['Oeste','Oeste','Centro','Este','Este'], ['Sur','Sur','Sur','Sur','Sur']] listamultas = [(0, 0, 120), (1, 2, 330), (3, 4, 123), (4, 2, 62), (0, 0, 50), (4, 4, 89), (0, 3, 25), (2, 0, 43), (3, 2, 21), (0, 0, 120)] # PROCEDIMIENTO recaudar = generaMatriz(listamultas,sectores) # SALIDA print(sectores) print(listamultas) print('Hay que recaudar:') print(recaudar)
Resultado del algoritmo
[['Norte', 'Norte', 'Norte', 'Norte', 'Norte'], ['Oeste', 'Oeste', 'Centro', 'Este', 'Este'], ['Oeste', 'Oeste', 'Centro', 'Este', 'Este'], ['Oeste', 'Oeste', 'Centro', 'Este', 'Este'], ['Sur', 'Sur', 'Sur', 'Sur', 'Sur']] [(0, 0, 120), (1, 2, 330), (3, 4, 123), (4, 2, 62), (0, 0, 50), (4, 4, 89), (0, 3, 25), (2, 0, 43), (3, 2, 21), (0, 0, 120)] Hay que recaudar: [[290. 0. 0. 25. 0.] [ 0. 0. 330. 0. 0.] [ 43. 0. 0. 0. 0.] [ 0. 0. 21. 0. 123.] [ 0. 0. 62. 0. 89.]] >>>