Last active
November 15, 2015 01:24
-
-
Save ricardosiri68/da97faa6ebd624c65003 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
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