Ejercicios Integradores Resueltos (Listas, Matrices, Diccionarios, Funciones)

9. Temperaturas Días Semana.

'''Consigna: 
Dado un diccionario que tiene los días laborares de la semana en el que se cargan
para cada día valores de 5 temperaturas del día que pueden estar en [-10,10] ó [20;50]
crear una función que muestre el menu siguiente:
1)Cargar un día...(paso como argumento las claves del diccionario..)
2)Mostrar día...(paso número de día 1 para Lunes,2 para Martes..)
3)Mostrar todo el diccionario ( un día por línea)
4)Mostrar el día que tuvo mayor promedio
5)Salir.
Cada punto del 1 al 4 implementar con una función.

'''
# Que faltaría para ir mejorando el programa?
# Que pasa si se carga dos veces un día? 
# Que pasa si se ingresan valores que no corresponden? letras en lugar de números.
# Puedo parametrizar los valores de temperatura?
# Que pasa si no cargue nada y ejecuto puntos 2,3,4?

datos={'Lunes':[],'Martes':[],'Miercoles':[],'Jueves':[],'Viernes':[]}

#------------------------------------------------------------
def menu():
   while True:
     print('1) Cargar un día de la semana')
     print('2) Mostra temperaturas de un día')
     print('3) Mostrar todo los datos')
     print('4) Mostrar el día con mayor promedio')
     print('5) Salir-finalizar el programa')
     opc=input('Ingrese una opción válida: ')
     if not(opc=='1' or opc=='2'or opc=='3'or opc=='4'or opc=='5'):
         print('La opción ingresada no es válida.. reingrese..')
     else:
        return opc
#------------------------------------------------------------
def cargar(dia):
    for i in range(5):
        temp=float(input('Ingrese la temperatura: '))
        while not((temp>=-10 and temp<=10) or (temp>=20 and temp<=50)):
            print('Ud. ingresó un valor que no pertence al rango..reingrese..')
            temp=float(input('Ingrese la temperatura: '))
        datos[dia].append(temp)

#------------------------------------------------------------
def mostrar_dia(dia):
    dias_semana=['Lunes','Martes','Miercoles','Jueves','Viernes']
    print(datos[dias_semana[dia-1]])
    
#------------------------------------------------------------
def mostrar_todo(): 
    print('-------------Valores cargados------------------')
    for z in datos:
        print(datos[z])
    print('------------------------------------------------')

#------------------------------------------------------------
def mayor_promedio():
    promedio_maximo=0
    for i in datos:
        print('i vale',i)
        acumulador=0
        for x in range(5):
            acumulador=acumulador+datos[i][x]
        if promedio_maximo<(acumulador/5):
            dia=i
    return dia

# Código principal-------------------------------------------------
while True:
    opc=menu()
    if opc=='1':
        while True:
            dia=input('Ingrese un día de la semana: ')
            dia=dia.capitalize()
            if dia in datos:
                cargar(dia)
                break
            else:
                print('El día ingresado no es válido. Reingrese..')
        print(datos)
    elif opc=='2':
        while True:
            dia=int(input('Ingrese un día de la semana: '))
            if dia in range(1,6):
                mostrar_dia(dia)
                break
            else:
                print('El día ingresado no es válido. Reingrese..')
    elif opc=='3':
        print('tres')
    elif opc=='4':
        print(mayor_promedio())
    elif opc=='5':
        break