Propuesta de solución en Python:
Como referencia para el algoritmo se usa la tabla:
ciudad | robo vehículos | asalto |
Guayaquil | 605 | 6345 |
Cuenca | 123 | 676 |
El módulo cargarDatos() desde un archivo se guarda como ecu911.py
La sección no era necesario escribirla en la evaluación, se podría suponer que ya estaba escrita.
# CCPG1001-Fundamentos de programación FIEC-ESPOL # 2Eva_IT2018_T1 Niveles seguridad por ciudad import numpy as np import ecu911 es ecu def titulostabla(tabla_dic): ciudad = tabla_dic.keys() ciudad = list(ciudad) unaciudad = ciudad[0] unregistro = tabla_dic[unaciudad] tipodelito = unregistro.keys() tipodelito = list(tipodelito) titulos = [ciudad,tipodelito] return(titulos) def crearMatriz(tabla_dic,titulos): ciudad = titulos[0] tipodelito = titulos[1] n = len(ciudad) m = len(tipodelito) tabla = np.zeros(shape=(n,m),dtype = int) f = 0 while not(f>=n): c = 0 unaciudad = ciudad[f] registro = tabla_dic[unaciudad] while not(c>=m): untipo = tipodelito[c] valor = registro[untipo] tabla[f,c] = valor c = c+1 f = f+1 return(tabla) def ciudadesMenosSeguras(matriz, titulos, untipo, poblacion): ciudad = titulos[0] tipodelito = titulos[1] columna = tipodelito.index(untipo) incidentes = matriz[:,columna] indicador = incidentes/poblacion cual = np.argmax(indicador) insegura = ciudad[cual] # Tarea: encontrar las siguientes menos seguras return(insegura) # PROGRAMA PRUEBA ------------------- # INGRESO nombrearchivo = 'reporteincidentes.txt' tabla = ecu.cargardatos(nombrearchivo) # Usado si no dispone del módulo y archivo.txt #tabla_dic = { # 'Guayaquil':{'robo vehiculo':605, 'asalto':6345}, # 'Cuenca': {'robo vehiculo':123, 'asalto': 676} # } poblacion = np.array([2000, 1000]) untipo = 'asalto' # PROCEDIMIENTO titulos = titulostabla(tabla_dic) matriz = crearMatriz(tabla_dic,titulos) inseguras = ciudadesMenosSeguras(matriz, titulos, untipo, poblacion) # SALIDA print('Los títulos de la tabla son:') print(titulos) print('La matriz de datos: ') print(matriz) print('La menos segura: ') print(inseguras)
Usando el módulo es necesario disponer de un archivo reporteincidentes.txt con datos, por facilidad en el mismo directorio de trabajo:
Guayaquil,605,6345 Cuenca,123,676