3. Assignació de vehicles a zones¶
Una ciutat regula l’accés de vehicles a dues zones de distribució:
centreiperifèrica. Per fer-ho, es disposa d’un fitxer d’accés de vehicles registrats, on cada línia conté la matrícula d’un vehícle, les emissions (un nombre enter o real) i la categoria (camió, furgoneta,…), tot separat per punt i coma. Per exemple:1111AAA;80.0;camió 2222BBB;90.0;camió 3333CCC;50;furgoneta 4444DDD;60.0;furgoneta 5555EEE;10.0;cotxe elèctric
Pots descarregar aquestes dades al fitxer d’exemple
exemple_vehicles.txt.També es disposa d’un diccionari que classifica cada categoria en una de les dues zones i a on les claus són categories i els valors la zona. Per exemple:
{ "camió": "perifèrica", "furgoneta": "centre", "cotxe elèctric": "centre" }
Dissenya la funció següent i desa-la al fitxer
vehicles.py.- llegeix_vehicle(linia, dic)¶
Retorna les dades d’una línea d’un fitxer d’accés com a una tupla (matrícula, emissions, zona).
Els següents doctests mostren exemples del que ha de fer la funció:
>>> dic = { ... "camió": "perifèrica", ... "furgoneta": "centre", ... "cotxe elèctric": "centre" ... } >>> llegeix_vehicle("1234ABC;104.5;camió", dic) ('1234ABC', 104.5, 'perifèrica') >>> llegeix_vehicle("4444HHH;120;camió", dic) ('4444HHH', 120.0, 'perifèrica')
Nota
Disposes de més tests al fitxer
test-llegeix-vehicle.txt.Per cada zona, només es poden autoritzar aquells vehicles que, en sumar les seves emissions amb la suma dels vehicles ja admesos a la mateixa zona, no superi un límit establert. Si un vehicle no pot ser admès per aquest motiu, s’omet, i el procés continua amb el següent.
Dissenya la funció següent i desa-la al fitxer
vehicles.py.- autoritzats(fvehicles, fcentre, fperi, dic, maxcentre, maxperi)¶
Escriu en els fitxers fcentre i fperi, les matrícules dels vehicles autoritzats a la zona centre i perifèrica respectivament, un per línia.
- Paràmetres:
fvehicles (str) – Nom del fitxer d’accés amb els vehicles
fcentre (str) – Nom del fitxer on s’escriuran les matrícules admeses a la zona «centre»
fperi (str) – Nom del fitxer on s’escriuran les matrícules admeses a la zona «perifèrica»
dic (dict) – Diccionari que relaciona cada categoria amb una zona
maxcentre (float) – Emissions màximes permeses a la zona centre
maxperi (float) – Emissions màximes permeses a la zona perifèrica
La funció ha de cridar a
llegeix_vehicle().Per exemple, pel fitxer d’exemple anterior
exemple_vehicles.txt, la següent crida:>>> autoritzats("exemple_vehicles.txt", "centre.txt", ... "peri.txt", dic, 100.0, 150.0)
crearia dos fitxers, un anomenat
centre.txtamb el contingut3333CCC 5555EEE
i un altre anomenat
peri.txtamb el contingut1111AAANota
Disposes de més tests al fitxer
test-autoritzats.txt.
Disposes de solucions al fitxer vehicles.py.