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( """ """, 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"
Catégorie : **{categorie}**
", 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.")