Ejercicio: 3Eva_IT2017_T2 Huracanes en Atlantico Norte
Propuesta de solución en Python:
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL # 3Eva_IT2017_T2 Huracanes en Atlantico Norte # Supone que el numero de columnas de M # Es igual al numero de nombres en huracanes import numpy as np def categoriza(M): tamano = np.shape(M) n = tamano[0] m = tamano[1] categoria = np.ones(m, dtype=int) for j in range(0,m,1): vv = M[2,j] if (vv>=100 and vv=150 and vv=200 and vv250): categoria[j]=5 return(categoria) def total_marejada(M,cat): categoria = categoriza(M) tamano = np.shape(M) n = tamano[0] m = tamano[1] marejadas = np.zeros(6,dtype=float) for j in range(0,m,1): k = categoria[j] marejadas[k] = marejadas[k]+M[4,j] totaluna = marejadas[cat] return(totaluna) def indices_anio(huracanes,anio): # Supone que cantidad de huracanes # es igual a columnas de matriz cuales = huracanes.keys() indices = {} a = 0 b = -1 for cada in cuales: m = len(huracanes[cada]) a = b + 1 b = a + m-1 indices[cada] = [a,b] return(indices[anio]) def velocidad_superior(M,huracanes,anio): cual = indices_anio(huracanes,anio) desde = cual[0] hasta = cual[1] vector = M[0,desde:hasta+1] promedio = np.mean(vector) cuantos = 0 for valor in vector: if (valor>promedio): cuantos = cuantos + 1 return(cuantos) def ACE(M,huracanes,anio): cual = indices_anio(huracanes,anio) desde = cual[0] hasta = cual[1] vector = M[0,desde:hasta+1] liberada = 0 for valor in vector: liberada = liberada + valor**2 liberada = liberada*(10**(-4)) return(liberada) def lluvia(M, huracanes, nombre_huracan,anio): nombres = huracanes[anio] nombres = list(nombres) donde = nombres.index(nombre_huracan) cual = indices_anio(huracanes,anio) desde = cual[0] hasta = cual[1] cantidad = M[3,desde+donde] return(cantidad) # PROGRAMA ------------------------ import numpy as np M = np.array([[20, 30, 19, 15, 18], [89,195,120,150,240], [65,165,100,110,200], [30, 49, 35, 89, 67], [ 5, 18, 1, 2, 5]] ) # 2015:('Ana','Kate'), # No usado para el ejemplo (CONFUSO) huracanes = {2016:('Alex', 'Otto'), 2017:('Ariene', 'Harvey','Irma'), } cat = 2 anio = 2017 nombre_huracan = 'Harvey' # PROCEDIMIENTO categoria = categoriza(M) marejadas = total_marejada(M,cat) indices = indices_anio(huracanes,anio) vel_superior = velocidad_superior(M,huracanes,anio) energia = ACE(M,huracanes,anio) llovio = lluvia(M, huracanes, nombre_huracan,anio) # SALIDA print(M) print(huracanes) print('---') print('categorias: ', categoria) print('Marejadas cat['+str(cat)+']: ', marejadas) print('indices: ', indices) print('velocidad superior: ', vel_superior) print('Energia liberada: ',energia) print('lluvia en mm: ', llovio)