1
resposta

Controle de acesso ao escritório

hora_minimo = 8
horario_maximo= 18
horario = int(input("Informe o horário (formato 24h): "))
if horario < hora_minimo or horario >= horario_maximo or horario < 0 or horario > 23:
    print("ACESSO NEGADO: Não é permitido entrar fora do horário comercial.")
else:
    print("ACESSO LIBERADO: bEM-VINDO AO ESCRITÓRIO!")

# USANDO FUNÇÃO
horario_minimo = 8
horario_maximo = 18
def controle_acesso(horario_atual: int) -> str:
    """Validar o acesso ao escritório em relação ao horário permitido."""
    if horario_atual < horario_minimo:
        return "ACESSO NEGADO: Não é permitado entrar ao escritório antes das 8h." 
    elif horario_atual >= horario_maximo:
        return "ACESSO NEGADO: Não é permitado entrar ao escritório a partir das 18h."
    else:
        return "ACESSO LIBERADO: Bem-vindo ao escritório!"
try:
    acesso = input("Digite a hora atual (formato 24h): ")
    verificando_acesso = int(acesso)
    if verificando_acesso < 0 or verificando_acesso > 23:
        print("ERRO: Horário inválido! O dia possui apenas horas de 0 a 23.")
    else:
        print(controle_acesso(verificando_acesso))
except ValueError:
    print("ERRO: Entrada inválida! Por favor, digita um número inteiro em formato 24 horas.")
1 resposta

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!