Ejercicio: 3Eva2017TI_T2 Huracanes en Atlántico 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)