Entrades de teatre 2

Es vol dissenyar una aplicació que gestioni la venda d’entrades d’un teatre. Per això es disposa d’una llista de comandes on cada comanda és un tuple amb dos elements: zona i nombre de localitats. La zona és un string com per exemple 'PLATEA', 'ANF', etc. Es disposa d’un diccionari (el teatre) on la clau és una zona i el seu valor és una altra llista de dos elements: el nombre de localitats lliures de la zona i el preu de les localitats d’aquesta zona.

Dissenyeu les funcions següents i deseu-les al fitxer teatre.py:

teatre.espotservir(teatre, comanda)

Retorna True si la comanda es pot servir i False si no.

Per exemple,

>>> teadic = {'PLATEA': [100, 40], 'ANF': [50, 30], 'LAT': [50, 20]}
>>> espotservir(teadic, ('PLATEA', 2))
True
>>> espotservir(teadic, ('LAT', 8))
True
>>> espotservir(teadic, ('LAT', 53))
False

Nota

Disposeu de jocs de proves al fitxer test-espotservir.txt.

teatre.actualitzateatre(teatre, comanda)

Actualitza les localitats del teatre tenint en compte que s’ha servit la comanda

Per exemple,

>>> teadic = {'PLATEA': [100, 40], 'ANF': [50, 30], 'LAT': [50, 20]}
>>> actualitzateatre(teadic, ('PLATEA', 2))
>>> teadic == {'PLATEA': [98, 40], 'ANF': [50, 30], 'LAT': [50, 20]}
True
>>> actualitzateatre(teadic, ('LAT', 8))
>>> teadic == {'PLATEA': [98, 40], 'ANF': [50, 30], 'LAT': [42, 20]}
True

Nota

Disposeu de jocs de proves al fitxer test-actualitzateatre.txt.

teatre.costcomanda(teatre, comanda)

Calcula i retorna el cost d’una comanda

Per exemple,

>>> teadic = {'PLATEA': [100, 40], 'ANF': [50, 30], 'LAT': [50, 20]}
>>> costcomanda(teadic, ('PLATEA', 2))
80
>>> costcomanda(teadic, ('LAT', 8))
160

Nota

Disposeu de jocs de proves al fitxer test-costcomanda.txt.

teatre.entrades(comandes, teatre)

Processa una llista de comandes, actualitzant convenientment el teatre i calculant el cost de cada comanda. Aquesta funció ha de retornar una llista amb el mateix nombre d’elements que la llista de comandes i on cada element sigui el cost de la comanda corresponent si aquesta es pot servir, o bé un 0 si no es pot servir. Si la comanda no es pot servir, el teatre no s’ha d’actualitzar.

Per exemple,

>>> teadic = {'PLATEA': [100, 40], 'ANF': [50, 30], 'LAT': [50, 20]}
>>> entrades([('PLATEA', 2), ('LAT', 8), ('LAT', 45), ('PLATEA', 3), ('ANF', 5)], teadic) 
[80, 160, 0, 120, 150]
>>> teadic == {'PLATEA': [95, 40], 'ANF': [45, 30], 'LAT': [42, 20]}
True

Nota

Disposeu de jocs de proves al fitxer test-entrades.txt.

Solució

Disposeu d’una solució al fitxer teatre.py.