2. Control de saldos (2 punts)

Disposem d’un fitxer amb les dades de facturació de diverses empreses. Cada línia del fitxer conté el nom d’una empresa, l’import total facturat i l’import total cobrat, separats per dos punts. Per exemple:

Alfa:1800:800
Beta:400:400
Gamma:900:100
Delta:500:100
Epsilon:300:500

Pots descarregar aquest fitxer factures1.txt d’exemple.

Anomenem saldo pendent d’una empresa la quantitat que encara queda per cobrar. Si l’import facturat és superior a l’import cobrat, el saldo pendent és la diferència entre el facturat i el cobrat; altrament, és 0.

Per a cada empresa, hi ha fixat el saldo pendent màxim que admet. Representem aquests límits amb un diccionari de límits, on cada clau és el nom d’una empresa i cada valor és el saldo pendent màxim permès per a aquesta empresa. Per exemple:

>>> dlimits = {
...    "Alfa": 1000, "Beta": 500, "Gamma": 750,
...    "Delta": 300, "Epsilon": 200}

Pots suposar que totes les empreses que apareixen al fitxer són claus del diccionari de límits.

  1. Dissenya la funció dades_facturacio(linia) que donat un string linia que representa una línia del fitxer indicat anteriorment, retorna una tupla amb dos elements:

    • el nom de l’empresa,

    • el saldo pendent de l’empresa.

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

    >>> dades_facturacio("Alfa:1800:800")
    ('Alfa', 1000)
    >>> dades_facturacio("Epsilon:300:500")
    ('Epsilon', 0)
    

    Disposeu de més tests al fitxer test-dades-facturacio.txt

    Desa la funció al fitxer deutes.py

  2. Dissenya la funció classifica_saldos(nomfitxer, dlimits, fit_ok, fit_deu) que donat el nom d’un fitxer nomfitxer amb dades de facturació, un diccionari de límits dlimits i els noms de dos fitxers de sortida fit_ok i fit_deu, classifiqui les empreses segons el seu saldo pendent.

    La funció ha de crear dos fitxers:

    • Al fitxer fit_ok s’hi han d’escriure les empreses amb un saldo pendent menor o igual que el saldo pendent màxim permès.

    • Al fitxer fit_deu s’hi han d’escriure les empreses amb un saldo pendent superior al saldo pendent màxim permès.

    A tots dos fitxers, cada línia contindrà el nom de l’empresa, el saldo pendent i el màxim permés per a aquella empresa, tot separat per dos punts (:).

    Aquesta funció ha de cridar la funció dades_facturacio.

    Per exemple, amb el fitxer i el diccionari d’exemple anteriors i la crida

    >>> classifica_saldos('factures1.txt',dlimits,'fok1.txt','fdeu1.txt')
    

    S’hauria de crear el fitxer fok1.txt amb el següent contingut:

    Alfa:1000:1000
    Beta:0:500
    Epsilon:0:200
    

    i el fitxer fdeu1.txt amb el següent contingut

    Gamma:800:750
    Delta:400:300
    

    Disposeu de més tests al fitxer test-classifica.txt

    Desa la funció al fitxer deutes.py

    Disposes de solucions al fitxer deutes.py.