s3Eva_IT2017_T2 Huracanes en Atlantico Norte

Propuesta de solución en Python:

# 3ra Evaluación I termino 2017
# Tema 2. Registro de Huracanes 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)