.. index:: Poblacions i comarques Poblacions i comarques -------------------------------------- La informació de una determinada població es representa com una llista de quatre elements: el nom de la població (un string), el nom de la comarca (un string), la altitud (un enter) i una llista de mida variable de mesures de temperatures (llista de reals). Un exemple amb la informació de Cervera seria: ['Cervera', 'Segarra', 548, [20.7, 19.7, 19.4, 18.2]]. 1. Dissenya una funció *mitjanaAquestaPoblacio(p)* que donada una població *p* representada com una llista com la descrita a dalt, calcula i retorna la mitjana de les seves temperatures. Per aquest calcul pots fer servir la funció predefinida en python *sum(l)* que retorna la suma dels valors de la llista *l*. .. code-block:: python3 >>> p = ['Gurb', 'Osona', 563, [18.6, 17.5, 18.2]] >>> t = mitjanaAquestaPoblacio(p) >>> round(t, 1) 18.1 >>> t = mitjanaAquestaPoblacio(['Cervera', 'Segarra', 548, [20.7, 19.7, 19.4, 18.2]]) >>> round(t, 1) 19.5 | 2. Dissenya una funció *mitjanaUnaPoblació(lp, s)* que donada una llista *lp* amb informació de diverses poblacions, i un string *s* amb el nom d'una població, calcula la seva mitjana de temperatures. Pel càlcul de la mitjana fes servir la funció *mitjanaAquestaPoblacio* de l'apartat anterior. Podeu suposar que la població *s* sempre la trobareu a la llista *lp*. .. code-block:: python3 >>> lp = [ [ 'Gurb', 'Osona', 563, [18.6, 17.5, 18.2] ], ... [ 'Cervera', 'Segarra', 548, [20.7, 19.7, 19.4, 18.2] ], ... [ 'Balaguer', 'Noguera', 233, [15.7, 17.7] ], ... [ 'Odena', 'Anoia', 421, [15.8, 16.2, 16.2, 16.6, 16.2] ] ... ] >>> t = mitjanaUnaPoblacio(lp, 'Cervera') >>> round(t, 1) 19.5 | 3. Dissenya una funció *mitjanaComarca(lp, s)* que donada una llista *lp* amb informació de diverses poblacions, i un string *s* amb el nom d'una comarca, calcula la mitjana de temperatures de la comarca. Fes dues versions: - una on la temperatura mitjana de la comarca es calcula com la mitjana de les temperatures mitjanes de les poblacions de la comarca. Fes servir la funció *mitjanaUnaPoblació* de l'apartat 2. .. code-block:: python3 >>> lp = [ [ 'Gurb', 'Osona', 563, [18.6, 17.5, 18.2] ], ... [ 'Cervera', 'Segarra', 548, [20.7, 19.7, 19.4, 18.2] ], ... [ 'Balaguer', 'Noguera', 233, [15.7, 17.7] ], ... [ 'Tarrega', 'Segarra', 540, [21.2, 19.8, 18.2] ], ... [ 'Odena', 'Anoia', 421, [15.8, 16.2, 16.2, 16.6, 16.2] ] ... ] >>> t = mitjanaComarca(lp, 'Segarra') # versió 1: 2 poblacions ('Cervera' : 19.5, 'Tarrega' : 19.733) >>> round(t, 3) 19.617 - un altre on la temperatura mitjana de la comarca es calcula com la suma de totes les temperatures de les poblacions de la comarca dividida entre el número de temperatures en la comarca. .. code-block:: python3 >>> lp = [ [ 'Gurb', 'Osona', 563, [18.6, 17.5, 18.2] ], ... [ 'Cervera', 'Segarra', 548, [20.7, 19.7, 19.4, 18.2] ], ... [ 'Balaguer', 'Noguera', 233, [15.7, 17.7] ], ... [ 'Tarrega', 'Segarra', 540, [21.2, 19.8, 18.2] ], ... [ 'Odena', 'Anoia', 421, [15.8, 16.2, 16.2, 16.6, 16.2] ] ... ] >>> t = mitjanaComarca(lp, 'Segarra') # versió 2: 7 temperatures (20.7, 19.7, 19.4, 18.2, 21.2, 19.8, 18.2) >>> round(t, 3) 19.6 | 4. Dissenyeu una funció *comarquesElevades(lp, lc, h)* que donada una llista *lp* amb informació de diverses poblacions, una llista *lc* amb noms de comarques i un enter *h* amb una altitud, calcula la (sub)llista dels noms de comarques de *lc* que són comarques elevades respecto de la altura *h*. Una comarca es diu que és elevada si conté alguna població en *lp* que està a una altitud superior a *h*. L'ordre en el que han d'aparèixer les comarques a la llista retornada ha de ser el mateix en el que apareixen en la llista *lc*. Podeu suposar que totes les comarques de la llista *lc* tenen al menys una població a la llista *lp*. .. code-block:: python3 >>> lp = [ [ 'Gurb', 'Osona', 563, [18.6, 17.5, 18.2] ], ... [ 'Cervera', 'Segarra', 548, [20.7, 19.7, 19.4, 18.2] ], ... [ 'Balaguer', 'Noguera', 233, [15.7, 17.7] ], ... [ 'Tarrega', 'Segarra', 540, [21.2, 19.8, 18.2] ], ... [ 'Odena', 'Anoia', 421, [15.8, 16.2, 16.2, 16.6, 16.2] ] ... ] >>> lc = ['Anoia', 'Segarra', 'Noguera'] >>> comarquesElevades(lp, lc, 400) ['Anoia', 'Segarra'] | | | | | | | | | |