# -*- coding: utf-8 -*-
#======================
#    Poids_Idéal
#----------------------
'''
Limites du programme
--------------------
Poids (p)  50 - 150
taille (t) 100 - 250
âge (a) 18 - 120
poignet 15 - 25

Variables du programme
----------------------
choix, taille, poids, sex, âge,
masse, morphologie, poignet, i pour compteur
=====================================================================
Indice de masse corporelle (IMC)	Interprétation (d'après l'OMS)
moins de 18,5						Insuffisance pondérale (maigreur)
18,5 à 25							Corpulence normale
25 à 30								Surpoids
30 à 35								Obésité modérée
35 à 40								Obésité sévère
plus de 40							Obésité morbide ou massive
=====================================================================
théorique 
P = X + 0,91 (taille en cm – 152,4),
X = 50 pour les hommes et 
X = 45,5 pour les femmes.
'''
print("              calcul du poids idéal")
print("--------------------------------------------------")
#-----------------------------choisir l'option
print()
print("         Calcul de son IMC ou poids idéal")
print("       Choissez le chiffre de votre formule")
print()
print(" 1 :.........Indice de masse Corporel..........: 1")
print(" 2 :.............Formule de Broca..............: 2")
print(" 3 :..........Formule de de Lorentz............: 3")
print(" 4 :.............Formule de Creff..............: 4")
print(" 5 :........Formule de Monnerot-Dumaine........: 5")
print(" 6 :...........Formule de Bornhardt............: 6")
print(" 7 :............Formule de Devine..............: 7")
print(" 8 :.............Formule de Peck...............: 8")
print(" 8 :............Formule théorique..............: 9")
print()
#-----------------------------------------choix
def choisir() :
    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")
        choisir() # tourniquet pour chiffre non conforme
    
    if choix < 0 :
        print("        Erreur ce chiffre est négatif !")
        choisir()  # tourniquet pour chiffre négatif
        
    if choix == 0 :
        print("        Erreur se chiffre est trop petit !")
        choisir()  # tourniquet pour chiffre trop petit
    
    if choix > 9 :
        print("        Erreur se chiffre est trop grand !")    
        choisir()  # tourniquet pour chiffre trop grand
    
    return
#================================================================= 1 Indice de masse Corporel
def indice() :
    global poids
    global taille
    global masse
    
    print("       Pour le calcul de l'IMC j'ai besoin")
    print("        de connaître votre poids et votre")
    print("    taille en centimètres, la réponce devrait")
    print("           se situer entre 18.5 et 25")
    print("      Fiable pour les adultes de 18 à 65 ans")
    print()
#-----------------------------------------------------------------------poids
    poids = input(" Combien pesez-vous entre 10 et 200 kilogramme ? ")
    print()
    try :
        poids = int(poids)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        indice() # tourniquet pour chiffre non conforme
    
    if poids < 10 or poids > 200 :
        print("   Il doit y avoir une erreur on recommence !")
        indice()  # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------taille
    taille = input("Combien mesurez-vous entre 50 et 2500 centimètres ? ")
    print()
    try :
        taille = int(taille)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        indice() # tourniquet pour chiffre non conforme
    
    if taille < 50 or taille > 2500 :
        print("   Il doit y avoir une erreur on recommence !")
        indice() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------formule
    masse = poids / (taille ** 2) * 10000
    masse = round(masse, 1)
    
    return
#================================================================= 2 Formule du Dr Paul Broca
def broca() :
    global taille
    global réponse
    
    print()
    print("    Pour le calcul de Broca j'ai besoin de")
    print("     connaître votre taille en centimètres")
    print()
#-----------------------------------------------------------------------taille
    taille = input("Combien mesurez-vous entre 50 et 2500 centimètre ? ")
    print()
    try :
        taille = float(taille)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        indice() # tourniquet pour chiffre non conforme
    
    if taille < 50 or taille > 2500 :
        print("   Il doit y avoir une erreur on recommence !")
        indice() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------formule
    réponse = taille - 100
    
    return
#================================================================= 3 Formule du Dr Friedrich Lorentz
def Lorentz() :
    global taille
    global sex
    global réponse
    
    print(" pour le calcul de Lorentz j'ai besoin de connaître")
    print("         votre taille en centimètres")
    print("     et si vous êtes un homme ou une femme")
    print(" valable pour les adultes entre 18 et 65 ans")
    print()
#-----------------------------------------------------------------------taille
    taille = input("Combien mesurez-vous entre 50 et 2500 centimètre ? ")
    print()
    try :
        taille = float(taille)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Lorentz() # tourniquet pour chiffre non conforme
    
    if taille < 50 or taille > 2500 :
        print("   Il doit y avoir une erreur on recommence !")
        Lorentz() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------sex
    sex = input(" taper 1 pour masculin, 2 pour féminin ? ")
    print()
    try :
        sex = int(sex)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Lorentz() # tourniquet pour chiffre non conforme
    
    if sex < 1 or sex > 2 :
        print("   Il doit y avoir une erreur on recommence !")
        Lorentz() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------formule
    if sex == 1 :
        réponse = (taille - 100) - ((taille - 150) / 4)
    else :
        réponse = (taille - 100) - ((taille - 150) / 2.5)
    
    return
#================================================================= 4 Formule du professeur AF Creff
def Creff() :
    global taille
    global morpho
    global âge
    global réponse
    
    print(" Pour le calcul de Creff j'ai besoin de connaître")
    print("         votre taille en centimètres")
    print("      votre âge et de votre morphologie")
    print()
#-----------------------------------------------------------------------taille
    taille = input("Combien mesurez-vous entre 50 et 2500 centimètre ? ")
    print()
    try :
        taille = float(taille)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Creff() # tourniquet pour chiffre non conforme
    
    if taille < 50 or taille > 2500 :
        print("   Il doit y avoir une erreur on recommence !")
        Creff() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------âge
    âge = input(" quel est votre âge ? ")
    print()
    try :
        âge = float(âge)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Creff() # tourniquet pour chiffre non conforme
        
    if âge < 5 or âge >120 :
         print("   Il doit y avoir une erreur on recommence !")
         Creff() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------morphologie
    morpho = input("1 pour maigre, 2 pour moyen, 3 pour gros ? ")
    print()
    try :
        morpho = int(morpho)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Creff() # tourniquet pour chiffre non conforme
    
    if morpho < 1 or morpho > 3 :
        print("   Il doit y avoir une erreur on recommence !")
        Creff() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------formule
    if morpho == 1 :
        réponse = ((taille - 100) + (âge / 10)) * 0.9 * 0.9
    if morpho == 2 :
        réponse = ((taille - 100) + (âge / 10)) * 0.9
    if morpho == 3 :
        réponse = ((taille - 100) + (âge / 10)) * 0.9 * 1.1
    
    réponse = round(réponse , 1)
    
    return
#================================================================= 5 Formule de Monnerot-Dumaine
def Monnerot() :
    global taille
    global poignet
    global réponse
    
    print("        Pour le calcul de Monnerot-Dumaine")
    print("j'ai besoin de connaître votre taille en centimètres")
    print("    et le tour de votre poignet en centimètres")
    print()
#-----------------------------------------------------------------------taille
    taille = input("Combien mesurez-vous entre 50 et 2500 centimètre ? ")
    print()
    try :
        taille = float(taille)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Monnerot() # tourniquet pour chiffre non conforme
    
    if taille < 50 or taille > 2500 :
        print("   Il doit y avoir une erreur on recommence !")
        Monnerot() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------poignet
    poignet = input(" combien de centimètre fait votre tour de poignet ? ")
    print()
    try :
        poignet = float(poignet)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Monnerot() # tourniquet pour chiffre non conforme
    
    if poignet < 12 or poignet > 30 :
        print("   Il doit y avoir une erreur on recommence !")
        Monnerot() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------formule
    réponse = (taille - 100 + (4 * poignet)) / 2
    
    return
#================================================================= 7 Bornhardt
def Bornhardt() :
    global taille
    global poitrine
    global réponse
    
    print("            pour le calcul de Bornhardt")
    print(" j'ai besoin de connaître votre taille en centimètres")
    print("       et votre tour de poitrine en centimètres")
    print()
#-----------------------------------------------------------------------taille
    taille = input("Combien mesurez-vous entre 50 et 2500 centimètre ? ")
    print()
    try :
        taille = float(taille)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Bornhardt() # tourniquet pour chiffre non conforme
    
    if taille < 50 or taille > 2500 :
        print("   Il doit y avoir une erreur on recommence !")
        Bornhardt() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------poitrine
    poitrine = input(" combien de centimètre fait votre tour de poitrine ? ")
    print()
    try :
        poitrine = float(poitrine)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Bornhardt() # tourniquet pour chiffre non conforme
    
    if poitrine < 80 or poitrine > 200 :
        print("   Il doit y avoir une erreur on recommence !")
        Bornhardt() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------formule
    réponse = (taille * poitrine) / 240
    
    return
#================================================================= 7 Devine
def Devine() :
    global taille
    global sex
    global réponse
    
    print("            pour le calcul de Devine")
    print(" j'ai besoin de connaître votre taille en centimètres")
    print("   et de savoir si vous êtes une femme ou un homme")
    print("       formule pour les adultes de 18 à 65 ans")
    print()
    
#-----------------------------------------------------------------------taille
    taille = input("Combien mesurez-vous entre 50 et 2500 centimètre ? ")
    print()
    try :
        taille = int(taille)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Devine() # tourniquet pour chiffre non conforme
    
    if taille < 50 or taille > 2500 :
        print("   Il doit y avoir une erreur on recommence !")
        Devine() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------sex
    sex = input(" taper 1 pour masculin, 2 pour féminin ? ")
    print()
    try :
        sex = int(sex)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Devine() # tourniquet pour chiffre non conforme
    
    if sex < 1 or sex > 2 :
        print("   Il doit y avoir une erreur on recommence !")
        Devine() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------formule
    if sex == 1 :
        réponse = 50 + 2.3 * (taille / 2.54 - 60)
    else :
        réponse = 45.5 + 2.3 * (taille / 2.54 - 60)
    
    return
#================================================================= 8 Peck
def Peck() :
    global taille
    global sex
    global âge
    global réponse
    
    print("              Pour la formule de Peck")
    print(" j'ai besoin de connaître votre taille en centimètres")
    print("   votre âge et si vous êtes un homme ou une femme")
    print()
#-----------------------------------------------------------------------taille
    taille = input(" Combien mesurez-vous entre 50 et 2500 centimètre ? ")
    print()
    try :
        taille = float(taille)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Bornhardt() # tourniquet pour chiffre non conforme
    
    if taille < 50 or taille > 2500 :
        print("   Il doit y avoir une erreur on recommence !")
        Bornhardt() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------âge
    âge = input(" quel est votre âge ? ")
    print()
    try :
        âge = float(âge)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Creff() # tourniquet pour chiffre non conforme
        
    if âge < 5 or âge >120 :
         print("   Il doit y avoir une erreur on recommence !")
         Creff() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------sex
    sex = input(" taper 1 pour masculin, 2 pour féminin ? ")
    print()
    try :
        sex = int(sex)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        Devine() # tourniquet pour chiffre non conforme
    
    if sex < 1 or sex > 2 :
        print("   Il doit y avoir une erreur on recommence !")
        Devine() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------formule
    taille = taille / 2.54 # conversion de la taille de centimètre en pouces(inches)
    if âge < 18 :
        if sex == 1 :
            réponse = -59.6035 + (5.2878 * taille) - (0.123939  * (taille ** 2)) + (0.00128936 * (taille ** 3))
        else :
            réponse = -77.55796 + (6.93728 * taille) - (0.171703 * (taille ** 2)) + (0.001726 * (taille ** 3))
    else :
        if sex == 1 :
            réponse = -130.736 + (4.064 * taille)
        else :
            réponse = -111.621 + (3.636 * taille)
    réponse = réponse / 2.205 # conversion de la réponse de livres(pounds) en kilogrammes
    
    return
#================================================================= 9 théorique
def théorique() :
    global taille
    global sex
    global réponse
    print("            pour le calcul de Devine")
    print(" j'ai besoin de connaître votre taille en centimètres")
    print("   et de savoir si vous êtes une femme ou un homme")
    print()
#-----------------------------------------------------------------------taille
    taille = input("Combien mesurez-vous entre 50 et 2500 centimètre ? ")
    print()
    try :
        taille = float(taille)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        théorique() # tourniquet pour chiffre non conforme
    
    if taille < 50 or taille > 2500 :
        print("   Il doit y avoir une erreur on recommence !")
        théorique() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------sex
    sex = input(" taper 1 pour masculin, 2 pour féminin, ? " )
    print()
    try :
        sex = int(sex)
    except :
        print(" Vous devez taper uniquement un chiffre, rien d'autre")
        théorique() # tourniquet pour chiffre non conforme
    
    if sex < 1 or sex > 2 :
        print("   Il doit y avoir une erreur on recommence !")
        théorique() # tourniquet pour chiffre non conforme
#-----------------------------------------------------------------------formule    
    if sex == 1 :
        réponse = 50 + 0.91 * (taille - 152.4)
    else :
        réponse = 45.5 + 0.91 * (taille - 152.4)
    
    return
#=================================
# Début de la lecture du programme
#-----------------------------déclaration des variables globales
global choix
global poids
global taille
global masse
global sex
global morpho
global poignet
global réponse
global âge
global poitrine
#-----------------------------initialisation des variables
choix = 0
poids = 0.0
taille = 0.0
masse = 0
sex = 0
morpho = 0
poignet = 0.0
réponse = 0.0
âge = 0.0
poitrine = 0.0
#-----------------------------[main]
choisir()
if choix == 1 :
    indice()
if choix == 2 :
    broca()
if choix == 3 :
    Lorentz()
if choix == 4 :
    Creff()
if choix == 5 :
    Monnerot()
if choix == 6 :
    Bornhardt()
if choix == 7 :
    Devine()
if choix == 8 :
    Peck()
if choix == 9 :
    théorique()
réponse = round(réponse, 2)
#-----------------------------affichage
print("-------------------------------------------------")
if choix == 1 :
    print(" votre indice de masse corporelle est de : ", masse)
else :
    print("  Votre poids idéal devrait être : ", réponse, "kilogrammes")
#-----------------------------------------------------------------------------------Sortie
print()
print("----------------------")
bye = (input ("Entrer pour Sortir...!"))
