Skip to content

Instantly share code, notes, and snippets.

@ricardosiri68
Last active November 15, 2015 01:24
Show Gist options
  • Save ricardosiri68/da97faa6ebd624c65003 to your computer and use it in GitHub Desktop.
Save ricardosiri68/da97faa6ebd624c65003 to your computer and use it in GitHub Desktop.
'''
A
Realize una funcion
que cree una lista con los platos ofrecidos por un restaurante.
De cada plato se conoce codigo, nombre, precio y destino con
la siguiente estructura:
[codigo,nombre,precio,destino] siendo los destinos
posibles "S" salon, "D", delivery O "A" ambos. La carga
de platos finaliza cuando se ingresa el plato cuya
descripcion sea igual a la palabra "fin"
B
Realize una funcion que reciba la lista creada
en el punto anterior. La funcion debera crear a su vez
otras dos listas: una debera contener
los platos exclusivos del salon y la otra
debera contener los platos exclusivos de delivery.
C
Realice un programa para llevar estadisticas
en un restaurante. debera imprimir por pantalla
el total de platos que pueden ser vendidos en el salon
y por dilevery , cuyo precio sea mayor a la 50 $
'''
class Resto:
__platos = []
@property
def platos(self):
return self.__platos
@property
def platos_salon(self):
return [plato for plato in self.platos if plato['destino'] == 'S']
@property
def platos_delivery(self):
return [plato for plato in self.platos if plato['destino'] == 'D']
def total_major_of(self, platos, precio):
return sum([p['precio'] for p in platos if p['precio'] > precio])
def delivery_total_major_of(self, precio):
return self.total_major_of(self.platos_delivery, precio)
def salon_total_major_of(self, precio):
return self.total_major_of(self.platos_salon, precio)
def validate_data(self, data):
if data['destino'] not in ('S', 'D', 'A'):
raise Exception('El destino del plato no es valido')
def add_plato(self, **kwargs):
self.validate_data(kwargs)
self.platos.append(kwargs)
class RestoUI:
__resto = Resto()
input_data = ''
def add_plato(self):
self.__resto.add_plato(**self.extract_data())
def extract_data(self):
try:
codigo, nombre, precio, destino = self.input_data.split(',')
return {
'codigo': codigo,
'nombre': nombre,
'precio': float(precio),
'destino': destino.strip()
}
except ValueError:
raise Exception('El formato de entrada del plato es invalido')
def show_platos(self, platos):
for plato in self.__resto.platos_salon:
print "{codigo} - {nombre} - {precio}".format(
codigo=plato['codigo'],
nombre=plato['nombre'],
precio=plato['precio']
)
def show_platos_salon(self):
print 'PLATOS EXCLUSIVOS DE SALON'
self.show_platos(self.__resto.platos_salon)
def show_platos_delivery(self):
print 'PLATOS EXCLUSIVOS DE DELOVERY'
self.show_platos(self.__resto.platos_delivery)
def show_total_salon(self):
print 'TOTAL MAYOR QUE $ 50.00 EN SALON: %s' %\
self.__resto.salon_total_major_of(50)
def show_total_delivery(self):
print 'TOTAL MAYOR QUE $ 50.00 EN DELIVERY: %s' %\
self.__resto.delivery_total_major_of(50)
def main():
msj = 'Ingrese un plato: codigo, nombre, precio, destino:'
resto_ui = RestoUI()
resto_ui.input_data = raw_input(msj)
while resto_ui.input_data != "fin":
resto_ui.add_plato()
resto_ui.input_data = raw_input(msj)
resto_ui.show_platos_salon()
resto_ui.show_total_salon()
resto_ui.show_platos_delivery()
resto_ui.show_total_delivery()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment