Pensions¶
Les despeses d’un conjunt de pensionistes s’emmagatzemen en una llista de llistes on cada subllista representa la informació d’un pensionista i està formada per l’identificador del pensionista (string), un enter que indica l’edat i una sèrie de despeses mensuals enregistrades (enters). En el següent exemple, la persona amb identificador “1111A” té 68 anys i tres despeses mensuals de 640, 589 i 573.
[['1111A',68,640,589,573], ['2222D',69,710,550,570,698,645,512]]
Desa totes les funcions al fitxer pensions.py.
Dissenya la funció
despesa_mitjanaque donada una llista amb la informació d’un sol pensionista, retorna la despesa mitjana mensual.La funció ha de passar el següent doctest:
>>> p = ['1111A',68,640,589,573] >>> d = despesa_mitjana(p) >>> round(d, 2) 600.67 >>> p = ['2222D',69,710,550,570,698,645,512] >>> d = despesa_mitjana(p) >>> round(d, 2) 614.17
Nota
Podeu descarregar el fitxer amb tests
test-despesa-mitjana.txtDissenya la funció
llista_desp_mitjanesque donada una llista de pensionistes retorna una altra llista amb la despesa mitjana mensual de cada persona arrodonida a dos decimals. La llista ha d’estar ordenada de forma ascendent.La funció ha de passar el següent doctest:
>>> l = [['1111A',68,640,589,573],['2222D',69,710,550,570,698,645,512], ... ['3333J',72,530,534],['4444N',75,770,645,630,650,590,481,602]] >>> ld = llista_desp_mitjanes(l) >>> ld [532.0, 600.67, 614.17, 624.0]
Nota
Podeu descarregar el fitxer amb tests
test-llista-desp-mitjanes.txtDissenya la funció
desp_mitjana_supque donada una llista de pensionistes i una despesa d retorna una altra llista amb l’identificador i l’edat de la primera persona que tingui una mitjana de despesa superior a d. En cas de que no n’hi hagi cap, la funció retornarà la llista buida.La funció ha de passar el següent doctest:
>>> l = [['1111A',68,640,589,573],['2222D',69,710,580,600,698,605,572],\ ... ['3333J',72,530,534],['4444N',75,770,655,630,650,610,491,632]] >>> desp_mitjana_sup(l, 625) ['2222D', 69] >>> desp_mitjana_sup(l, 1000) []
Nota
Podeu descarregar el fitxer amb tests
test-desp-mitjana-sup.txtDissenya la funció
despesa_superiorque donada una llista amb la informació d’un sol pensionista i una despesa d, retornaTruesi hi ha alguna despesa superior a d iFalsealtrament.La funció ha de passar el següent doctest:
>>> l = ['1111A',68,640,589,573] >>> despesa_superior(l,580) True >>> despesa_superior(l,641) False
Nota
Podeu descarregar el fitxer amb tests
test-despesa-superior.txtDissenya la funció
llista_desp_supque donada una llista de pensionistes i una despesa d retorna una llista de tuples amb les persones que tenen alguna de les seves despeses mensuals superior a d. Cada tupla tindrà dos elements, l’identificador de la persona i la seva despesa mijana arrodonida a un decimal. Si no n’hi ha cap, la funció retornarà la llista buida. La llista haurà d’estar ordenada ascendentment segons la mitjana.La funció ha de passar el següent doctest:
>>> l = [['1111A',68,640,589,573],['2222D',69,710,580,600,698,705,572], ... ['3333J',72,530,534],['4444N',75,770,655,630,650,610,591,632], ... ['5555L',68,598,672,612]] >>> llista_desp_sup(l,650) [('5555L', 627.3), ('2222D', 644.2), ('4444N', 648.3)] >>> llista_desp_sup(l,700) [('2222D', 644.2), ('4444N', 648.3)]
Nota
Podeu descarregar el fitxer amb tests
test-llista-desp-sup.txtDissenya la funció
no_arribaque donada una llista de pensionistes i una despesa d, retorna l’identificador de la primera persona que té alguna despesa mensual superior a d. Si no n’hi ha cap, la funció retornarà un string buit.La funció ha de passar el següent doctest:
>>> l = [['1111A',68,640,589,573], ['2222D',69,710,580,600,698,705,572], ... ['3333J',72,530,534],['4444N',75,770,655,630,650,610,491,632]] >>> no_arriba(l,650) '2222D' >>> no_arriba(l,850) ''
Nota
Podeu descarregar el fitxer amb tests
test-no-arriba.txtDissenya la funció
simula_inflacioque donada una llista amb la informació d’un sol pensionista i un percentatge, modifiqui la llista de manera que incrementi cada despesa mensual amb el percentatge donat i arrodonida a un decimal.La funció ha de passar el següent doctest:
>>> l = ['1111A',68,640,589,573] >>> simula_inflacio(l,0.5) >>> l ['1111A', 68, 643.2, 591.9, 575.9] >>> l2 = ['2222A',68,640,589,573] >>> simula_inflacio(l2,1.3) >>> l2 ['2222A', 68, 648.3, 596.7, 580.4]
Nota
Podeu descarregar el fitxer amb tests
test-simula-inflacio.txtDissenya la funció
llista_sim_inflacioque donada una llista de pensionistes i un percentatge, modifiqui la llista de manera que les despeses mensuals de cada pensionista s’incrementin amb el percentatge donat i queden arrodonides a un decimal.La funció ha de passar el següent doctest:
>>> l = [['1111A',68,640,589,573], ['2222D',69,710,580,600,698,705,572], ... ['3333J',72,530,534],['4444N',75,770,655,630,650,610,491,632]] >>> llista_sim_inflacio(l,2) >>> l [['1111A', 68, 652.8, 600.8, 584.5], ['2222D', 69, 724.2, 591.6, 612.0, 712.0, 719.1, 583.4], ['3333J', 72, 540.6, 544.7], ['4444N', 75, 785.4, 668.1, 642.6, 663.0, 622.2, 500.8, 644.6]]
Nota
Podeu descarregar el fitxer amb tests
test-llista-sim-inflacio.txt
Solució
Disposeu de solucions al fitxer pensions.py