Tarifa plana 2¶
Les dades dels clients d’una companyia de telefonia mòbil s’emmagatzemen en un fitxer de consums en què cada línia representa un client i està formada per un identificador de client, un enter que indica el nombre de MB (Megabytes) de tarifa plana que te assignats i una sèrie d’enters que representen diferents consums en MB d’aquest client. Per exemple, algunes línies del fitxer podria ser:
444B, 200, 70, 40, 120
333A, 200, 35, 50
555C, 100, 30, 23, 30, 60
a on el primer client, amb identificador 444B te una tarifa plana fins a
200MB i ha enregistrat tres consums, un de 70MB, un de 40MB i un de
120MB.
Desa totes les funcions següents al fitxer tarifa_plana2.py.
- tarifa_plana2.extreu_client_tarifa_consums(linia)¶
linia és un string amb el format de les línies d’un fitxer de consums.
Retorna l’identificador del client, la tarifa (
int) i la llista de consums (int) que hi ha a linia.Per exemple:
>>> ic, tf, cn = extreu_client_tarifa_consums('444B, 200, 70, 40, 120') >>> ic '444B' >>> tf 200 >>> cn [70, 40, 120]
Trobaràs més tests al fitxer
test-extreu_client_tarifa_consums.txt.
Aquesta funció et resultarà útil per dissenyar les tres funcions següents.
Dissenya la funció
total_tarifaque donat el nom d’un fitxer de consums i un entert, retorna el total de consums de tots els clients que tenen assignada una tarifa plana detMB.Aquests son exemples de tests que ha de passar la funció:
>>> total_tarifa('consums.txt',200) 315 >>> total_tarifa('consums.txt',100) 265
Trobaràs més tests al fitxer
test-total_tarifa.txt. Abans de passar els tests, descarrega el fitxerconsums.txt.Dissenya la funció despesa_forta que donat el nom d’un fitxer de consums, retorna una llista amb els identificadors dels clients que hagin enregistrat algun consum individual superior al límit assignat. La llista tindrà el mateix ordre en que apareixen els identificadors al fitxer.
Aquest és un exemple de test que ha de passar la funció:
>>> despesa_forta('consums2.txt') ['555C', '111D', '777W']
Trobaràs més tests al fitxer
test-despesa_forta.txt. Abans de passar els tests, descarrega el fitxerconsums2.txt.Dissenya la funció
llistatque, donats els noms d’un fitxer de consums, el nom d’un segon fitxer i un preu (float), escriu al segon fitxer els clients que tenen un consum total superior a l’assignat de manera que aparegui un client per línia amb el seu identificador, un espai en blanc i la quantitat en euros extra que ha de pagar arrodonida a un decimal. Aquesta quantitat és el resultat de multiplicar el nombre de MB que el client ha gastat de més respecte dels que té assignats a la seva tarifa plana pel preu donat. Aquells clients que no han superat els MB assignats no han d’aparèixer al fitxer.Per exemple, si fem la crida
>>> llistat('consums.txt','resultat1.txt',0.12)
amb el fitxer
consums.txtdel primer apartat, s’hauria de crear el fitxerresultat1.txtamb el següent contingut:444B 3.6 555C 5.2 777W 0.1
Trobaràs tests al fitxer
test-llistat.txt. Aquests tests usen els fitxersconsums.txticonsums2.txtque has descarregat abans.
Solució
Disposes de solucions al fitxer tarifa_plana2.py