Olá, Luísa. Como vai?
Excelente código! Sua implementação está muito bem estruturada e demonstra uma evolução fantástica no uso do Python, especialmente por trazer duas abordagens diferentes (uma direta e outra utilizando funções com type hints e documentação em docstring).
O ponto mais alto do seu projeto foi a preocupação com a experiência do usuário e tratamento de erros: usar o bloco try/except para capturar o ValueError (caso o usuário digite letras) e validar se a hora está entre 0 e 23 mostra um cuidado digno de uma desenvolvedora profissional.
Ao analisar a lógica das suas duas abordagens, separei alguns pontos de atenção técnica e melhorias que vão deixar o seu código ainda mais robusto e limpo:
1. Simplificando a Lógica Condicional (Abordagem 1)
Na sua primeira estrutura if, você escreveu quatro condições separadas pelo operador or:
if horario < hora_minimo or horario >= horario_maximo or horario < 0 or horario > 23:
Embora funcione, o Python nos permite encadear operadores de comparação de uma forma muito parecida com a matemática tradicional. Podemos reescrever a validação de "horário comercial válido" de forma mais legível assim:
# Verifica se o horário está dentro do intervalo permitido (entre 8 e 17)
if 8 <= horario < 18:
print("ACESSO LIBERADO: BEM-VINDO AO ESCRITÓRIO!")
else:
print("ACESSO NEGADO: Não é permitido entrar fora do horário comercial.")
Inverter a lógica para testar primeiro o que é liberado costuma deixar o código mais natural de ler.
2. Evitando Horários Inválidos na Função (Abordagem 2)
Na sua segunda abordagem, você colocou a validação de limite do dia (verificando_acesso < 0 or verificando_acesso > 23) do lado de fora da função, direto no fluxo principal do programa.
Como boa prática de design de código (especialmente no paradigma de funções), a própria função deve ser auto-suficiente e responsável por se defender de dados inválidos. O ideal é que essa validação aconteça logo na primeira linha da função:
def controle_acesso(horario_atual: int) -> str:
"""Validar o acesso ao escritório em relação ao horário permitido."""
# A função se defende primeiro contra dados impossíveis
if horario_atual < 0 or horario_atual > 23:
return "ERRO: Horário inválido! O dia possui apenas horas de 0 a 23."
if horario_atual < horario_minimo:
return "ACESSO NEGADO: Não é permitido entrar ao escritório antes das 8h."
elif horario_atual >= horario_maximo:
return "ACESSO NEGADO: Não é permitido entrar ao escritório a partir das 18h."
else:
return "ACESSO LIBERADO: Bem-vindo ao escritório!"
Dessa forma, quem for usar a sua função em outra parte do sistema não precisa se preocupar em fazer um if antes de chamá-la.
- Pequeno detalhe de digitação: Notei que na mensagem de retorno antes das 8h, a palavra "permitido" acabou saindo como "permitado". Vale dar uma corrigida rápida na string para o sistema ficar impecável!
Parabéns pelo excelente projeto e por aplicar conceitos tão maduros como tratamento de exceções logo nas aulas de estruturas condicionais!
Espero que possa ter lhe ajudado!