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.

    >>> 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
    

  1. 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.

    >>> 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
    

  1. 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.

      >>> 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.

      >>> 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
      

  1. 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.

    >>> 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']