1. Gestió energètica

  1. Una empresa de gestió energètica vol estudiar com canvien els nivells de consum d’energia en diverses zones segons les condicions de temperatura. Les dades d’una zona es representen com una llista de llistes on cada subllista es una mostra i conté tres valors: un identificador (str), la temperatura registrada (enter) i el nivell d’energia associat (enter).

    Per exemple:

    [['223d', 14, 50], ['252h', 18, 52], ['0232', 27, 40]]
    

    Dissenya la funció equilibra_zona(lzona, var) que donada una llista amb les dades d’una zona lzona i un valor de variació var (enter), modifiqui la llista de manera que:

    • Si la temperatura de la mostra és inferior a 15 incrementi el nivell d’energia en var unitats.

    • Si la temperatura de la mostra és superior a 25, redueixi el nivell d’energia en var unitats, però només si l’energia resultant no és negativa.

    Els següents doctests mostren exemples del que ha de fer la funció:

    >>> dades = [['223d', 14, 10], ['252h', 26, 20], ['ab12', 18, 7]]
    >>> equilibra_zona(dades, 5)
    >>> dades
    [['223d', 14, 15], ['252h', 26, 15], ['ab12', 18, 7]]
    
    >>> dades = [['aa00', 30, 3], ['bb77', 27, 5], ['cc19', 29, 10]]
    >>> equilibra_zona(dades, 4)
    >>> dades
    [['aa00', 30, 3], ['bb77', 27, 1], ['cc19', 29, 6]]
    

    Disposes de més tests al fitxer test-equilibra-zona.txt

    Desa la funció al fitxer energia.py

  2. Es representen les dades de totes les zones com un diccionari de zones, on cada clau és el nom d’una zona (string) i cada valor és una llista de llistes amb les dades d’una zona com les de l’apartat anterior.

    Per exemple:

    zones = {
        "Nord": [['223d', 14, 50], ['252h', 18, 52]],
        "Sud": [['723xx', 26, 40], ['522s', 28, 38]]
    }
    

    També disposem d’un diccionari de producció energètica actual, on cada clau és el nom d’una zona i cada valor és un real que representa la temperatura actual d’aquella zona:

    produccio = {"Nord": 1800, "Sud": 4200}
    

    Dissenya la funció revisa_zones(dzon, var, dprod, pmin, pmax) que donat un diccionari de zones dzon, un valor var (enter), un diccionari de producció energètica dprod i dos enters pmin i pmax, modifiqui les dades de totes aquelles zones que estiguin a dzon i per les quals la producció actual és inferior a pmin o superior a pmax, cridant per a cadascuna d’elles la funció equilibra_zona.

    Els següents doctests mostren exemples del que ha de fer la funció:

    >>> dzon = {
    ...   'Nord': [['223d', 14, 50], ['252h', 18, 52]],
    ...   'Sud': [['723xx', 26, 40], ['522s', 28, 38]],
    ...   'Est': [['e001', 12, 1], ['e002', 25, 9]]
    ... }
    >>> dprod = {'Nord': 1200, 'Sud': 4200, 'Est': 2000}
    >>> revisa_zones(dzon, 5, dprod, 1500, 4000)
    >>> dzon == {
    ...   'Nord': [['223d', 14, 55], ['252h', 18, 52]],
    ...   'Sud': [['723xx', 26, 35], ['522s', 28, 33]],
    ...   'Est': [['e001', 12, 1], ['e002', 25, 9]]
    ... }
    True
    

    Disposes de més tests al fitxer test-revisa-zones.txt

    Desa la funció al fitxer energia.py

Disposes de solucions al fitxer energia.py.