# -*- coding: utf-8 -*-
#----------------------
# Calcul de la longueur d'onde en mètres
# de la fréquence en hertz
# en tenant compte de la température de l'air
#----------------------------------------------------------
# pour avoir plus de précisions les arrondis ont été diésés
#==========================================================
print()
print("   Convertion de la fréquence en Hertz ")
print("     de la longueur d'onde en mètres")
print("         selon la température")
print(" ========================================")
print()
print("       Fréquence en Hertz.....= 1")
print("    -------------------------------")
print("    Longueur d'onde en mètres...= 2")
print()
#------------------------------------------------- choisir l'option
def option() :
    global choix
    
    choix = input(" Entrez le numéro de l'option choisie ? ")
    print()
    try :
        choix = int(choix)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        option() # tourniquet pour frappe non conforme
    
    if choix < 0 :
        print("   Erreur ce chiffre est négatif !")
        option()  # tourniquet pour chiffre négatif
    
    if choix == 0 :
        print("   Erreur se chiffre est trop petit !")
        option()  # tourniquet pour chiffre trop petit
    
    if choix > 2 :
        print("   Erreur se chiffre est trop grand !")    
        option()  # tourniquet pour chiffre trop grand
    
    return
#------------------------------------------------- entrée température
def tempé() :
    global température
    
    température = input("    Quel est la Température ? ")
#    print()
    try :
        température = float(température)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        tempé()  # tourniquet pour frappe non conforme
    
    if température < -25.0 :
        print(" la température est trop basse !")
        tempé()  # tourniquet pour température faible
    
    if température > 55.0 :
        print(" température trop haute !")
        tempé()  # tourniquet pour température haute

    return
#------------------------------------------------- entrée fréquence
def freq() :
    global fréquence
    
    fréquence = input("    Quel est la Fréquence ? ")
    print()
    try :
        fréquence = float(fréquence)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        freq()  # tourniquet pour frappe non conforme
    if fréquence <= 0.0 :
        print(" une fréquence nécessite au moins 1 hertz !")
        freq()  # tourniquet pour fréquence inexistante
    return
#------------------------------------------------- entrée longueur d'onde
def lng_ond() :
    global longueurOnde
    
    longueurOnde = input(" Quel est la longueur d'onde ? ")
    print()
    try :
        longueurOnde = float(longueurOnde)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        lng_ond()  # tourniquet pour frappe non conforme
    if longueurOnde <= 0.0 :
        print(" longueur d'onde trop faible")
        lng_ond()  # tourniquet pour longueur d'onde inexistante
    return
#------------------------------------------------- calcul de la variable de température
def vartemp() :
    global variabTempér
    
    if température >= 0.0 :
        variabTempér = 331.6 + température * 0.62
    else :
        variabTempér = 331.6 - abs(température) * 0.62
#    variabTempér = round(variabTempér, 2 )
    return
#------------------------------------------------- Fréquence pour le calcul de la Longueur d'onde
def calc() :
    global fréquence
    global longueurOnde
    
    if choix == 1 :
        longueurOnde = variabTempér / fréquence
#    longueurOnde = round(longueurOnde, 3)
#------------------------------------------------- Longueur d'onde pour le calcul de la fréquence
    if choix == 2 :
        fréquence = variabTempér / longueurOnde
#    fréquence = round(fréquence, 3)
    return
#===========================================================================
# Début du programme
#----------------------------------------------------- déclaration des variables globales
global choix
global température
global variabTempér
global fréquence
global longueurOnde
#----------------------------------------------------- initialisation des variables
choix = 0
température = 0.0
variabTempér = 0.0
fréquence = 0.0
longueurOnde = 0.0
#----------------------------------------------------- [main]
option()
tempé()
if choix == 1 :
    freq()
if choix == 2 :
    lng_ond()
vartemp()
calc()
#----------------------------------------------------- affiche
if température > 1 or température < -1 :
    print(" Température = ", température , "Degrés")
else :
    print(" Température = ", température , "Degré")
print(" Fréquence   = ", fréquence, "hertz")
if longueurOnde > 1 :
    print(" Longueur d'onde = ", longueurOnde, "mètres")
else :
    print(" Longueur d'onde = ", longueurOnde, "mètre")
#=============================================================
'''
 Si avec "Fréquence_Notes_Diapason.py" on calcul la fréquence:
       avec un diapason à 440 et un do de l'octave 0
           on trouve une fréquence de 16.352 Hz
	 
         En calculant la longueur d'onde (option 1)
       avec "Fréquence_Onde_Température.py" on trouve:
	
      résustats arrondis        résultats non arrondis
    -----------------------    -------------------------
    à 10 °C = 20.658 mètres    20.658023483365948 mètres
    à 15 °C = 20.848 mètres    20.847602739726028 mètres
    à 18 °C = 20.961 mètres    20.961350293542075 mètres
    à 20 °C = 21.037 mètres    21.037181996086105 mètres
    à 25 °C = 21.227 mètres    21.226761252446185 mètres
 
    Avec le calcul inverse sans les arrondis on retrouve
        exactement la bonne fréquence ! (option 2)
'''
#----------------------------------------------------- Sortie
print()
print("----------------------")
bye = (input ("Entrer pour Sortir...!"))
