Olá, Victor, como vai?
Seu código está muito bem implementado e funcional, seguindo corretamente a lógica de cálculo de IMC e as estruturas condicionais solicitadas no exercício. É excelente ver o uso do bloco try-except para lidar com entradas de dados inválidas e a separação da lógica em funções, o que torna o script mais organizado e profissional.
Uma pequena melhoria que pode ser aplicada é o uso da função round para limitar as casas decimais do resultado do IMC, tornando a leitura mais agradável no console. Você pode utilizar o código imc_formatado = round(imc, 2) antes de exibir o valor.
Parabéns pelo empenho em compartilhar sua resolução.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!