cardel

G10 Reto 4

Jun 15th, 2021
813
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from functools import reduce
  2.  
  3. def calcular_boleta(venta:tuple)->float:
  4.     sala = venta[0]
  5.     tipo = venta[1]
  6.     cliente = venta[2]
  7.     num_boletas = venta[3]
  8.  
  9.     if sala=="2d" and cliente=="adulto" and tipo=="general":
  10.         return 9500*num_boletas
  11.     elif sala == "2d" and cliente=="adulto" and tipo=="preferencial":
  12.         return 12000*num_boletas
  13.     elif sala == "3d" and cliente=="adulto" and tipo=="general":
  14.         return 13000*num_boletas
  15.     elif sala =="3d" and cliente=="adulto" and tipo=="preferencial":
  16.         return 15000*num_boletas
  17.     elif sala=="2d" and cliente=="niño" and tipo=="general":
  18.         return 4750*num_boletas
  19.     elif sala == "2d" and cliente=="niño" and tipo=="preferencial":
  20.         return 6000*num_boletas
  21.     elif sala == "3d" and cliente=="niño" and tipo=="general":
  22.         return 6500*num_boletas
  23.     elif sala =="3d" and cliente=="niño" and tipo=="preferencial":
  24.         return 7500*num_boletas    
  25.     else:
  26.         return 0
  27.  
  28.  
  29. def consolidado_cine(ventas:list)->dict:
  30.     salida = {}
  31.  
  32.     venta2D = list(filter(lambda x: x[0]=="2d",ventas))
  33.     venta3D = list(filter(lambda x: x[0]=="3d",ventas))
  34.  
  35.     numBoletas_2D = reduce(lambda acc,elm: acc+elm[3],venta2D,0)
  36.     numBoletas_3D = reduce(lambda acc,elm: acc+elm[3],venta3D,0)
  37.  
  38.     if numBoletas_3D >= numBoletas_2D:
  39.         salida["funcion"]="3d"
  40.     else:
  41.         salida["funcion"]="2d"
  42.  
  43.     salida["diferencia-boletas-funcion"]=abs(numBoletas_2D-numBoletas_3D)
  44.  
  45.     ventas_2D = reduce(lambda acc,elm: acc+calcular_boleta(elm),venta2D,0)
  46.     ventas_3D = reduce(lambda acc,elm: acc+calcular_boleta(elm),venta3D,0)
  47.  
  48.     salida["diferencia-dinero-funcion"]=abs(ventas_2D-ventas_3D)
  49.    
  50.     #Tipo de zona
  51.     ventaGeneral = list(filter(lambda x: x[1]=="general",ventas))
  52.     ventaPreferencial = list(filter(lambda x: x[1]=="preferencial",ventas))
  53.    
  54.     numBoletas_General = reduce(lambda acc,elm: acc+elm[3],ventaGeneral,0)
  55.     numBoletas_Preferencial = reduce(lambda acc,elm: acc+elm[3],ventaPreferencial,0)
  56.     if numBoletas_Preferencial >= numBoletas_General:
  57.         salida["sala"]="preferencial"
  58.     else:
  59.         salida["sala"]="general"
  60.    
  61.     salida["diferencia-boletas-sala"]=abs(numBoletas_General-numBoletas_Preferencial)
  62.  
  63.     ventas_General= reduce(lambda acc,elm: acc+calcular_boleta(elm),ventaGeneral,0)
  64.     ventas_Preferencial = reduce(lambda acc,elm: acc+calcular_boleta(elm),ventaPreferencial,0)
  65.  
  66.     salida["diferencia-dinero-sala"]=abs(ventas_General-ventas_Preferencial)
  67.    
  68.     #Tipo de cliente
  69.     ventaNihno = list(filter(lambda x: x[2]=="niño",ventas))
  70.     ventaAdulto = list(filter(lambda x: x[2]=="adulto",ventas))
  71.    
  72.     numBoletas_Nihno = reduce(lambda acc,elm: acc+elm[3],ventaNihno,0)
  73.     numBoletas_Adulto = reduce(lambda acc,elm: acc+elm[3],ventaAdulto,0)
  74.    
  75.     if numBoletas_Adulto >= numBoletas_Nihno:
  76.          salida["cliente"]="adulto"
  77.     else:
  78.         salida["cliente"]="niño"
  79.  
  80.     ventas_Adulto= reduce(lambda acc,elm: acc+calcular_boleta(elm),ventaAdulto,0)
  81.     ventas_Nihno = reduce(lambda acc,elm: acc+calcular_boleta(elm),ventaNihno,0)
  82.  
  83.     salida["diferencia-boletas-cliente"]=abs(numBoletas_Adulto-numBoletas_Nihno)
  84.     salida["diferencia-dinero-cliente"]=abs(ventas_Adulto-ventas_Nihno)
  85.     return salida
RAW Paste Data