Oi, Felipe! Como vai?
Agradeço por compartilhar seu código com a comunidade Alura.
Sua solução está muito bem organizada! Gostei bastante do uso de funções separadas, do tratamento de erro com try/except
, e da clareza na lógica das faixas de IMC.
Uma dica interessante para o futuro é incluir o peso e a altura no resultado para deixar a análise mais completa. Veja abaixo uma versão com esse ajuste aplicado:
peso: float = float(input("Informe o peso em kg: "))
altura: float = float(input("Informe a altura em metros: "))
def imc(peso: float, altura: float) -> float:
if peso <= 0 or altura <= 0:
raise ValueError("Peso e altura devem ser positivos.")
return peso / (altura ** 2)
def aviso_imc(imc: float) -> str:
if imc < 18.5:
return "Voce esta abaixo do peso"
elif 18.5 <= imc < 25:
return "Voce esta no peso normal"
elif 25 <= imc < 30:
return "Voce esta em Sobrepeso"
elif 30 <= imc < 35:
return "Voce esta em Obesidade grau 1"
elif 35 <= imc < 40:
return "Voce esta em Obesidade grau 2"
else:
return "Voce esta em Obesidade grau 3"
if __name__ == "__main__":
try:
imc_resultado = imc(peso, altura)
print(f"Com {peso}kg e {altura}m, seu IMC e: {imc_resultado:.2f}")
print(aviso_imc(imc_resultado))
except ValueError as e:
print(e)
Esse código deixa a mensagem mais informativa e continua bem estruturado!