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.
Dissenya la funció
dades_facturacio(linia)que donat un stringliniaque 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.txtDesa la funció al fitxer
deutes.pyDissenya la funció
classifica_saldos(nomfitxer, dlimits, fit_ok, fit_deu)que donat el nom d’un fitxernomfitxeramb dades de facturació, un diccionari de límitsdlimitsi els noms de dos fitxers de sortidafit_okifit_deu, classifiqui les empreses segons el seu saldo pendent.La funció ha de crear dos fitxers:
Al fitxer
fit_oks’hi han d’escriure les empreses amb un saldo pendent menor o igual que el saldo pendent màxim permès.Al fitxer
fit_deus’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.txtamb el següent contingut:Alfa:1000:1000 Beta:0:500 Epsilon:0:200
i el fitxer
fdeu1.txtamb el següent contingutGamma:800:750 Delta:400:300
Disposeu de més tests al fitxer
test-classifica.txtDesa la funció al fitxer
deutes.pyDisposes de solucions al fitxer
deutes.py.