"""Ejemplo didáctico de responsabilidades MVC, sin servidor web.""" class Cupo: def __init__(self, plazas): if type(plazas) is not int or plazas < 0: raise ValueError("El cupo debe ser un entero no negativo") self._plazas = plazas @property def plazas(self): return self._plazas def reservar(self, cantidad): if type(cantidad) is not int or cantidad <= 0: raise ValueError("La cantidad debe ser positiva") if cantidad > self._plazas: raise ValueError("No hay plazas suficientes") self._plazas -= cantidad def vista(datos): return f"{datos['mensaje']} | Plazas libres: {datos['plazas']}" def controlador(modelo, entrada): try: cantidad = int(entrada) except ValueError: mensaje = "Escribe un número entero" else: try: modelo.reservar(cantidad) except ValueError as error: mensaje = str(error) else: mensaje = "Reserva confirmada" datos = {"mensaje": mensaje, "plazas": modelo.plazas} return vista(datos) if __name__ == "__main__": cupo = Cupo(3) for texto in ["2", "2", "dos", "0"]: print(controlador(cupo, texto))