1
resposta

CONTROLE DE ACESSO AO ESCRITÓRIO

Prezados(as),
Boa Tarde,
Segue implementação da solução:

# AREA DE VARIÁVEIS

# Solicita a hora atual ao usuário
hora_atual = int(input("Informe a hora atual (0-23): "))

# PROCESSAMENTO E SAÍDA

print("\n--- CONTROLE DE ACESSO AO ESCRITÓRIO --------------------------")
# Verifica se a hora está dentro do horário de funcionamento (8h às 18h)
if 8 <= hora_atual < 18:
  print("Acesso PERMITIDO. Bem-vindo(a) ao escritório!")
elif hora_atual < 0 or hora_atual > 23:
  print("Erro: Hora inválida. Por favor, insira um valor entre 0 e 23.")
else:
  print("Acesso NEGADO. O escritório está fechado no momento.")
print("--------------------------------------------------------------")
1 resposta

Olá, Luiz Fernando. Como vai?

Sua solução para o sistema de controle de acesso ficou excelente! O código está super limpo, bem documentado e com uma divisão muito clara entre as etapas de entrada de dados, processamento e saída.

O destaque do seu projeto vai para a preocupação em tratar as entradas inválidas (elif hora_atual < 0 or hora_atual > 23:). Em sistemas reais de controle de acesso de segurança, validar se o dado faz sentido (já que o dia só tem 24 horas) é essencial para impedir que o sistema se comporte de maneira inesperada por causa de um erro de digitação do usuário.

Para colaborar com os seus estudos e enriquecer o debate sobre lógica de programação aqui no fórum, trago duas sugestões bem legais sobre o fluxo de execução e a experiência do usuário.


1. Cláusula de Guarda: Validando o Erro Primeiro

O seu código funciona perfeitamente. Contudo, do ponto de vista do design de software, o ideal é que a validação de erro seja a primeira coisa a ser testada pelo programa (o que chamamos de cláusula de guarda).

No formato atual, se o usuário digitar um horário inválido (como 25), o programa primeiro vai imprimir o cabeçalho decorativo do terminal para só depois avisar sobre o erro. Fazendo o teste de validação logo no topo, nós barramos o fluxo caso o dado esteja incorreto e economizamos processamento. Veja a diferença:

hora_atual = int(input("Informe a hora atual (0-23): "))

# 1. Cláusula de Guarda: Valida se o dado está correto antes de qualquer coisa
if hora_atual < 0 or hora_atual > 23:
    print("Erro: Hora inválida. Por favor, insira um valor entre 0 e 23.")
else:
    # 2. Se o dado é válido, o sistema gera o relatório de acesso
    print("\n--- CONTROLE DE ACESSO AO ESCRITÓRIO --------------------------")
    
    if 8 <= hora_atual < 18:
        print("Acesso PERMITIDO. Bem-vindo(a) ao escritório!")
    else:
        print("Acesso NEGADO. O escritório está fechado no momento.")
        
    print("--------------------------------------------------------------")

Note como, ao isolar o erro na primeira linha, a verificação do horário comercial no if interno ficou ainda mais direta, dependendo apenas do if e do else.


2. Próximo Passo: E se o horário de fechamento for às 18h em ponto?

No seu código, você utilizou o operador 8 <= hora_atual < 18. Isso significa que se alguém chegar às 18h00, o sistema fará o teste 18 < 18 (que dá falso) e jogará a pessoa para o else ("Acesso NEGADO"). Essa lógica está perfeita se o expediente encerra rigorosamente no minuto anterior (17h59).

Caso a empresa decida que funcionários ainda podem passar pela catraca até as 18h00 inclusive, bastaria ajustar o operador para menor ou igual:

if 8 <= hora_atual <= 18:

Parabéns mais uma vez pelo capricho nos menus do terminal e por sempre se preocupar com a documentação do código!

Espero que possa ter lhe ajudado!