# Lezione 17 - Esercizio 1 - Temperatura
# Scrivi una funzione in Python analizza_temperature che prende in input una lista
# di temperature (numeri float) e restituisce la temperatura media, la temperatura
# massima e la temperatura minima (tuple). Poi, crea un programma che chiede
# all'utente di inserire una serie di temperature (fino a quando non inserisce
# 'stop'), le salva in una lista e utilizza la funzione per analizzare queste
# temperature.

def analizza_temperature(temperature: list[float]) -> tuple[float, float, float]:
    """
    Calcola la temperature media, massima e minima

    :param temperature: lista di numeri float rappresentanti delle temperature da analizzare
    :return: tupla contenente media (float), massima (float) e minima (float) delle temperature
    """
    if not temperature:  # Se la lista è vuota viene considerata False, con il not davanti, il tutto
                         # diventa True. Quindi, se la lista è vuota, "not temperature" è True, quindi
                         # si entra nell'if e si evita di andare in errore con le righe dopo.
        return None, None, None  # Oppure 0.0, 0.0, 0.0

    media = sum(temperature) / len(temperature)
    massima = max(temperature)
    minima = min(temperature)

    return media, massima, minima

def main():
    """
    Programma principale per inserire e analizzare temperature
    """
    temperature = list()

    print("Inserisci una serie di temperature (scrivi 'stop' per terminare l'inserimento):")
    while True:
        temperatura_inserita = input("Insersci una temperatura: ")
        if temperatura_inserita.lower() == 'stop':
            break

        temperatura_convertita = float(temperatura_inserita)
        temperature.append(temperatura_convertita)

    media, massima, minima = analizza_temperature(temperature)

    print("\n\nRisultati dell'analisi delle temperature:")
    print(f"Temperatura media: {media}")
    print(f"Temperatura massima: {massima}")
    print(f"Temperatura minima: {minima}")

if __name__ == "__main__":
    main()