Spaces:
Sleeping
Sleeping
| 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.") |