IMC / app.py
mopaoleonel's picture
Upload 2 files
dad92c7 verified
Raw
History Blame Contribute Delete
4.09 kB
import streamlit as st
from streamlit_extras.stylable_container import stylable_container
import numpy as np
# Configuration de la page Streamlit
st.set_page_config(
page_title="Calculateur d'IMC Professionnel",
page_icon="⚖️",
layout="wide",
initial_sidebar_state="collapsed",
)
# CSS personnalisé pour améliorer le design
st.markdown(
"""
<style>
.reportview-container {
background: linear-gradient(135deg, #f0f2f5, #e1e6ea);
}
.main {
background-color: rgba(255, 255, 255, 0.8);
padding: 2rem;
border-radius: 10px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
h1, h2, h3 {
color: #333;
}
.imc-result-container {
padding: 1rem;
border-radius: 5px;
margin-top: 1rem;
font-size: 1.2rem;
font-weight: bold;
text-align: center; /* Centrer le texte pour une meilleure apparence */
}
.color-insuffisant {
color: #d9232d; /* Rouge */
}
.color-normal {
color: #1c7c54; /* Vert */
}
.color-surpoids {
color: #e8820d; /* Orange */
}
.color-obese {
color: #d9232d; /* Rouge */
}
</style>
""",
unsafe_allow_html=True,
)
with stylable_container(key="main_container", css_styles="""
{
padding: 2rem;
border-radius: 10px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
background-color: rgba(255, 255, 255, 0.8);
}
"""):
st.title("⚖️ Calculateur d'Indice de Masse Corporelle (IMC)")
st.write("Entrez votre taille et votre poids pour calculer votre IMC.")
# Utilisation de colonnes pour un agencement plus esthétique
col1, col2 = st.columns(2)
with col1:
taille = st.number_input("📏 Taille (en mètres)", min_value=0.5, max_value=2.5, step=0.01, format="%.2f")
with col2:
poids = st.number_input("🏋️ Poids (en kilogrammes)", min_value=20.0, max_value=200.0, step=0.1, format="%.1f")
if st.button("🧮 Calculer l'IMC"):
if taille > 0:
imc = poids / (taille ** 2)
st.subheader("📊 Résultat de l'IMC")
st.write(f"Votre IMC est de : **{imc:.2f}**")
# Définir la catégorie d'IMC et la classe de couleur
if imc < 18.5:
categorie = "Insuffisance pondérale"
couleur_classe = "color-insuffisant"
elif 18.5 <= imc < 25:
categorie = "Poids normal"
couleur_classe = "color-normal"
elif 25 <= imc < 30:
categorie = "Surpoids"
couleur_classe = "color-surpoids"
else:
categorie = "Obésité"
couleur_classe = "color-obese"
st.markdown(f"<div class='imc-result-container'><span class='{couleur_classe}'>Catégorie : **{categorie}**</span></div>", unsafe_allow_html=True)
with st.expander("ℹ️ Interprétation de l'IMC"):
st.write("""
L'Indice de Masse Corporelle (IMC) est une mesure qui permet d'évaluer la corpulence d'une personne. Voici les catégories généralement admises :
- **Moins de 18.5 :** Insuffisance pondérale
- **18.5 à 24.9 :** Poids normal
- **25 à 29.9 :** Surpoids
- **30 et plus :** Obésité
**Important :** L'IMC est une indication générale et ne tient pas compte de la masse musculaire. Il est toujours recommandé de consulter un professionnel de santé pour une évaluation personnalisée.
""")
else:
st.error("Veuillez entrer une taille valide.")
st.markdown("---")
st.info("✨ Une application conçue avec soin pour une expérience utilisateur optimale.")