| 3 cuotas de $35.300,00 sin interés | CFT: 0,00% | TEA: 0,00% | Total $105.900,00 |
"""Una empresa administra una red de estaciones de servicio distribuidas en distintas localidades.
Cada estaciòn registra diariamente la cantidad de litros de combustible vendidos.Los datos se almacen en archivos para su analisis y planificacion de abasteciomiento.
PUNTO 1: Desarrollar un programa en Python que permita ingresar la cantidad de estaciones a registrar.
Para cada estaciòn, el usuario deberà ingresar:
- El nombre de la estaciòn (por ejemplo: Estaciòn Norte, Estaciòn Sur)
- La cantidad de litros vendidos en el dìa.
La cantidad de litros no puede ser negativa. El programa deberà validad ese dato y solicitar nuevamente
el ingreso en caso de error.
Utilizar listas paralelas. Al finalizar el ingreso, ambas listas deberàn mostrarse en pantalla.
PUNTO 2: Definir una funciòn llamada clasificar_ventas() que reciba como paràmetro la cantidad de
litros vendidos por una estaciòn y retome una cadena con su clasificaciòn:
- venta alta: màs de 5000 litros
- venta media: entre 2000 y 5000 litros
- venta baja: menos de 2000 litros
Mostrar la clasificaciòn obtenida para cada estaciòn previamente cargada. Ademàs se debe generar el
archivo ventas.txt con el siguiente formato:
nombre estacion; litros; clasificacion
Por ejemplo:
Estacion Norte; 6400; ALTA
punto 3: El programa deberà leer el archivo ventas txt. y deberà realizar los siguientes càlculos con
la informaciòn del archivo:
- total de litros vendidos en el dìa.
- el promedio de litros por estacion
- el nombre de la estacion con mayor cantidad de litros vendidos
- el nombre de la estacion con menos cantidad de litros vendidos
- la cantidad de estaciones que superaron el promedio calculado
- la diferencia entre la estacion de mayor y menor venta
- la cantidad de estacionbes clasificadas como "venta alta", "venta media" y "venta baja"
- el porcentaje que representa cada estaciòn sobre el total de litros vendidos en el dìa
- el nombre de la estaciòn cuya venta es la màs cercana al promedio calculado
"""
def ingresar_datos():
nombres_estaciones=[]
cant_litros_vend=[]
cant_estaciones=int(input("Ingrese la cantidad de estaciones a analizar: "))
while cant_estaciones<1:
print("Error. Los valores ingresados no deben ser menores a 1. Reingrese.")
cant_estaciones=int(input("Ingrese la cantidad de estaciones a analizar: "))
for estacion in range(1,cant_estaciones+1):
print("ESTACION:",estacion)
nombre_estacion=input("Ingrese el nombre de la estacion: ")
cant_litros_vendidos=int(input("Ingrese la cantidad de litros vendidos: "))
while cant_litros_vendidos<1:
print("Error. Los valores ingresados no deben ser menores a 1. Reingrese.")
cant_litros_vendidos=int(input("Ingrese la cantidad de litros vendidos: "))
nombres_estaciones.append(nombre_estacion)
cant_litros_vend.append(cant_litros_vendidos)
return nombres_estaciones,cant_litros_vend
def mostrar_info(estaciones,cantidad):
print("INFORMACION DE LAS ESTACIONES:")
for i in range(len(estaciones)):
print("Estacion:",estaciones[i],"- Cantidad de litros:",cantidad[i])
def clasificar_ventas(litros):
if litros>5000:
return "VENTA ALTA"
elif litros<=5000 and litros>=2000:
return "VENTA MEDIA"
else:
return "VENTA BAJA"
def generar_archivo(nombres,cantidades):
clasificaciones=[]
for i in range(len(nombres)):
clasificacion=clasificar_ventas(cantidades[i])
clasificaciones.append(clasificacion)
print("Sucursal:",nombres[i],"- Cantidad de litros vendidos:",cantidades[i],"- Clasificacion:",clasificacion)
try:
with open("archivo","wt") as archivo_estaciones:
for i in range(len(nombres)):
linea= nombres[i]+";"+str(cantidades[i])+";"+clasificaciones[i]+"\n"
archivo_estaciones.write(linea)
except:
print("Ocurrio un error.")
print("Archivo generado con exito")
def leer_archivo(archivo):
nombres_estaciones=[]
cant_litros_vend=[]
try:
with open("ventas.txt","rt") as archivo_estaciones:
for linea in archivo_estaciones:
linea=linea.strip()
partes=linea.split(";")
nombres_estaciones.append(partes[0])
cant_litros_vend.append(int(partes[1]))
except:
print("Ocurrio un error.")
return nombres_estaciones,cant_litros_vend
def calcular_total_litros_vendidos(cant):
total=0
for i in range(len(cant)):
total+=cant[i]
return total
def promedio_litros_por_estacion(estaciones,litros_totales):
cant_estaciones=len(estaciones)
if cant_estaciones:
return litros_totales/cant_estaciones
else:
return 0
def calcular_estacion_mayor_litros(nom_estaciones,litros):
nom_est_mayor=nom_estaciones[0]
cant_litros_mayor=litros[0]
for i in range(len(nom_estaciones)):
if litros[i]>cant_litros_mayor:
cant_litros_mayor= litros[i]
nom_est_mayor= nom_estaciones[i]
return nom_est_mayor
def calcular_estacion_menor_litros(nom_estaciones,litros):
nom_est_menor=nom_estaciones[0]
cant_litros_menor=litros[0]
for i in range(len(nom_estaciones)):
if litros[i]<cant_litros_menor:
cant_litros_menor= litros[i]
nom_est_menor= nom_estaciones[i]
return nom_est_menor
def calcular_estaciones_encima_promedio(litros_vendidos,promedio):
cantidad=0
for i in range(len(litros_vendidos)):
if litros_vendidos[i]>promedio:
cantidad+=1
return cantidad
def calcular_diferencia(litros_vendidos):
cant_menor=litros_vendidos[0]
cant_mayor=litros_vendidos[0]
for i in range(len(litros_vendidos)):
if litros_vendidos[i]<cant_menor:
cant_menor=litros_vendidos[i]
if litros_vendidos[i]>cant_mayor:
cant_mayor=litros_vendidos[i]
return cant_mayor - cant_menor
def contar_clasificaciones(litros):
altas=0
medias=0
bajas=0
for i in range(len(litros)):
clasificacion=clasificar_ventas(litros[i])
if clasificacion=="VENTA ALTA":
altas+=1
elif clasificacion=="VENTA MEDIA":
medias+=1
else:
bajas+=1
return altas,medias,bajas
def calcular_estacion_mas_cercana_al_promedio(estaciones,litros,promedio):
nombre_cercana=estaciones[0]
distancia_menor= litros[0]-promedio
if distancia_menor<0:
distancia_menor=distancia_menor*(-1)
for i in range(len(estaciones)):
distancia_actual=litros[i]-promedio
if distancia_actual<0:
distancia_actual=distancia_actual*(-1)
if distancia_actual<distancia_menor:
distancia_menor=distancia_actual
nombre_cercana= estaciones[i]
return nombre_cercana
def mostrar_porcentajes(est,litros,total_litros):
print("Porcentajes sobre el total de ventas:")
if total_litros>0:
for i in range(len(est)):
porcentaje= (litros[i]*100)/total_litros
print("La estacion",est[i],"representa el",porcentaje,"%")
def main():
estaciones,litros_vendidos=ingresar_datos()
print()
mostrar_info(estaciones,litros_vendidos)
print()
print("---CLASIFICACION DE LAS SUCURSALES---")
generar_archivo(estaciones,litros_vendidos)
print()
nombres_archivo,cant_archivo=leer_archivo("ventas.txt")
total_litros=calcular_total_litros_vendidos(cant_archivo)
promedio=promedio_litros_por_estacion(nombres_archivo,total_litros)
nom_mayor=calcular_estacion_mayor_litros(nombres_archivo,cant_archivo)
nom_menor=calcular_estacion_menor_litros(nombres_archivo,cant_archivo)
num_est_encima=calcular_estaciones_encima_promedio(cant_archivo,promedio)
diferencia=calcular_diferencia(cant_archivo)
altas,medias,bajas=contar_clasificaciones(cant_archivo) est_mas_cerc_promedio=calcular_estacion_mas_cercana_al_promedio(nombres_archivo,cant_archivo,promedio)
print()
print("---CALCULOS---")
print("Total de litros vendidos en el dìa:",total_litros)
print("Promedio de litros por estacion:",promedio)
print("Nombre de la estacion con mayor cantidad de litros vendidos",nom_mayor)
print("Nombre de la estacion con menor cantidad de litros vendidos",nom_menor)
print("Cantidad de estaciones que superaron el promedio calculado:",num_est_encima)
print("Diferencia entre la estacion de mayor y menor venta",diferencia)
print("Cantidad de estaciones por clasificacion -> Altas:", altas, "| Medias:", medias, "| Bajas:", bajas)
print("Nombre de la estaciòn cuya venta es la màs cercana al promedio calculado",est_mas_cerc_promedio)
mostrar_porcentajes(nombres_archivo,cant_archivo,total_litros)
main()
