Oii, Samuel.
A sua resolução tá correta e atende perfeitamente ao que o exercício pediu. A lógica que você montou no elif usando o and garante com precisão que o número esteja dentro do intervalo de peso normal.
Tenho duas dicas rápidas para você polir ainda mais seu código. A primeira é sobre a simplificação: como o Python lê o código sequencialmente, se ele passar pelo primeiro if e for falso, o programa já sabe automaticamente que o IMC é maior ou igual a 18.5. Por isso, no elif, você poderia escrever apenas elif IMC < 25:, economizando código.
A segunda dica é sobre a visualização do resultado. O comando print(IMC) pode gerar um número com muitas casas decimais (algo como 24.55555...). Para deixar a saída melhor, você pode usar a formatação de f-strings assim: print(f"{IMC:.2f}"). Isso limitará o número a dois dígitos após a vírgula.
Está mandando muito bem nos estudos, continue assim!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!