#!/usr/bin/env python3
"""
Zadanie 1: Kalkulator BMI z klasyfikacja
Program oblicza BMI i okresla kategorie wagi uzytkownika.
"""

import sys


def oblicz_bmi(waga, wzrost):
    """Oblicza BMI i zwraca krotke (bmi, kategoria)."""
    bmi = waga / ((wzrost / 100) ** 2)
    
    if bmi < 18.5:
        kategoria = "niedowaga"
    elif bmi < 25:
        kategoria = "waga prawidlowa"
    elif bmi < 30:
        kategoria = "nadwaga"
    else:
        kategoria = "otylosc"
    
    return (round(bmi, 1), kategoria)


def pobierz_dane():
    """Pobiera dane od uzytkownika z walidacja."""
    try:
        waga_input = input("Podaj wage (kg): ").strip()
        wzrost_input = input("Podaj wzrost (cm): ").strip()
        
        waga = float(waga_input)
        wzrost = float(wzrost_input)
        
        if not (20 <= waga <= 300):
            print("Blad: Waga musi byc w zakresie 20-300 kg.")
            return (None, None)
        
        if not (100 <= wzrost <= 250):
            print("Blad: Wzrost musi byc w zakresie 100-250 cm.")
            return (None, None)
        
        return (waga, wzrost)
        
    except ValueError:
        print("Blad: Podaj liczby poprawnie.")
        return (None, None)


def main():
    """Glowna funkcja programu."""
    print("=" * 40)
    print("  KALKULATOR BMI")
    print("=" * 40)
    print()
    
    waga, wzrost = pobierz_dane()
    
    if waga is None:
        sys.exit(1)
    
    bmi, kategoria = oblicz_bmi(waga, wzrost)
    
    print()
    print("-" * 40)
    print(f"  BMI: {bmi}")
    print(f"  Kategoria: {kategoria}")
    print("-" * 40)
    
    if kategoria == "niedowaga":
        print("  Zalecenia: Zwieksz spozycie kalorii, konsultacja z dietetykiem.")
    elif kategoria == "waga prawidlowa":
        print("  Zalecenia: Utrzymuj aktualny styl zycia.")
    elif kategoria == "nadwaga":
        print("  Zalecenia: Zadbaj o aktywnosc fizyczna, ogranicz kalorie.")
    else:
        print("  Zalecenia: Skontaktuj sie z lekarzem.")


if __name__ == "__main__":
    main()