2. Errors de sistema (3 punts)

  1. Representem el seguiment de l’estat d’un sistema com una llista d’strings on cada element és un estat que pot ser 'OK', 'WARN' o 'ERROR'. Es considera que els dos últims són estats problemàtics. Cada posició de la llista correspon a un instant consecutiu en el temps. Per exemple, a la llista

    ['OK', 'WARN', 'ERROR', 'ERROR']
    

    el sistema es troba inicialment en estat 'OK', després passa a 'WARN' i finalment es registren dos estats consecutius 'ERROR'.

    Dissenya la funció analitza_estats que donada una llista amb el format anterior i un enter positiu que representa un límit d’errors, retorna una llista de missatges (strings) amb avisos de canvis d’estat o bé la llista ['estat crític'] si el nombre d’estats 'ERROR' arriba al límit donat. Suposarem que la llista donada té com a mínim dos estats.

    La construcció de la llista de missatges ha de seguir les regles següents:

    • Si un estat és 'OK' i el següent és 'WARN', cal afegir 'alerta'.

    • Si un estat és 'WARN' i el següent és 'ERROR', cal afegir 'estat greu'.

    • Si dos estats consecutius són iguals i problemàtics, cal afegir 'sense canvi'.

    • En qualsevol altre cas, no s’afegeix res.

    Desa la funció al fitxer errors.py:

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

    >>> analitza_estats(['OK', 'OK', 'WARN', 'OK'], 2)
    ['alerta']
    >>> analitza_estats(['OK', 'WARN', 'ERROR', 'ERROR', 'OK'], 3)
    ['alerta', 'estat greu', 'sense canvi']
    >>> analitza_estats(['OK', 'WARN', 'ERROR', 'ERROR', 'OK'], 2)
    ['estat crític']
    

    Disposes de més tests al fitxer test-analitza-estats.txt

    Disposes de solucions al fitxer errors.py.