Ejercicio: 2Eva2018TI_T1 Niveles seguridad por ciudad
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.
Algoritmo en Python
# 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