Olá, Thaís, como vai?
Seu código atende plenamente aos requisitos do exercício e demonstra um bom entendimento sobre o controle de fluxo com tratamentos de exceções. Você utilizou corretamente o bloco try-except para capturar falhas de conversão de tipos e divisões impossíveis, garantindo que o programa não seja interrompido abruptamente por erros de execução.
O uso do raise para personalizar as mensagens de erro dentro da lógica condicional foi uma excelente escolha técnica, pois centraliza a exibição das mensagens no bloco except.
Agradeço por compartilhar sua resolução com a comunidade e incentivo que continue praticando e postando seus avanços.
Qualquer dúvida que surgir durante seus estudos, lembre-se que o fórum está à disposição para ajudar.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!