def despesa_mitjana(pens):
    return sum(pens[2:])/(len(pens)-2)

def llista_desp_mitjanes(lp):
    ldesp = []
    for p in lp:
        mitjana = despesa_mitjana(p)
        ldesp.append(round(mitjana,2))
    ldesp.sort()
    return ldesp

# una altra solució amb comprensions i sorted

def llista_desp_mitjanes2(lp):
    return sorted([round(despesa_mitjana(p),2) for p in lp])

def desp_mitjana_sup(lp,d):
    for p in lp:
        mitjana = despesa_mitjana(p)
        if mitjana > d:
            return p[:2]
    return []

def despesa_superior(pens,d):
    for desp in pens[2:]:
        if desp>d:
            return True
    return False

def llista_desp_sup(lp,d):
    lsup = []
    for p in lp:
        if despesa_superior(p,d):
            mitjana = despesa_mitjana(p)
            t = (p[0], round(mitjana,1))
            lsup.append(t)
    lsup.sort(key=lambda x:x[1])
    return lsup

# una altra solució amb comprensions i sorted

def llista_desp_sup2(lp,d):
    ldsup = [(p[0], round(despesa_mitjana(p),1)) for p in lp if despesa_superior(p,d)]
    return sorted(ldsup,key=lambda x:x[1])

def no_arriba(lp,d):
    for p in lp:
        if despesa_superior(p,d):
            return p[0]
    return ''

def simula_inflacio(pens,perc):
    for i in range(2,len(pens)):
        pens[i] = round(pens[i] + pens[i]*perc/100,1)

def llista_sim_inflacio(lp,perc):
    for p in lp:
        simula_inflacio(p,perc)
