Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!