Olá, Bruno, como vai?
Seu código está consistente e cumpre a proposta do exercício sem ajustes obrigatórios. A leitura de entrada, o tratamento de erros e a validação do intervalo foram feitos com atenção, o que deixa o fluxo bem claro e seguro para quem usar a função.
Um ponto que pode ser interessante como aprimoramento é separar a lógica de acesso da parte interativa. Isso ajuda quando você quiser reaproveitar a função em outro contexto. Por exemplo, poderia existir uma função que apenas recebe um número e devolve a mensagem, enquanto outra cuida do loop de entrada.
Um exemplo simples dessa ideia seria algo como uma função que recebe a hora e retorna “Acesso permitido” ou “Acesso negado”, enquanto o loop chamaria essa função sempre que o usuário digitasse um valor válido.
Continue compartilhando seus exercícios no fórum, Bruno. Estamos à disposição.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!