Esta aula marca o início do Módulo 5, focado em operadores lógicos. Eles são a fundação para a construção de condições complexas e decisões inteligentes nos seus programas, permitindo que você combine resultados de expressões booleanas.

5.1. Operadores Lógicos

Os operadores lógicos (and, or, not) são usados para combinar duas ou mais expressões condicionais, resultando em um único valor booleano (True ou False). Eles são essenciais dentro de estruturas de controle como if/elif/else e laços while.

5.1.1. O Operador Lógico and (E)

O operador and é o mais restritivo dos três. Ele retorna True somente se todas as expressões que ele conecta forem verdadeiras. Basta que uma única condição seja falsa para que todo o resultado seja False.

Expressão 1 Operador Expressão 2 Resultado
True and True True
True and False False
False and True False
False and False False

Exemplo 1: Verificação de Elegibilidade (Múltiplos Critérios)

Para que uma pessoa possa se candidatar a um cargo, ela deve atender simultaneamente a dois critérios: ter mais de 18 anos E ter um diploma universitário.

idade = 22
possui_diploma = True

# A condição completa só é True se AMBAS as partes forem True.
elegivel_ao_cargo = (idade >= 18) and possui_diploma

print(f"Idade: {idade}")
print(f"Possui Diploma: {possui_diploma}")
print(f"Elegível ao cargo? {elegivel_ao_cargo}")

# Teste com uma condição False:
idade_2 = 17
elegivel_2 = (idade_2 >= 18) and possui_diploma
print(f"\\nElegível 2 (Idade < 18)? {elegivel_2}") # Saída: False

idade = 22
possui_diploma = True

# A condição completa só é True se AMBAS as partes forem True.
if idade >= 18 and possui_diploma:
		print("O candidato é maior de idade e possui diploma,")
		print(("portanto é elegivel para o cargo")

# Teste com uma condição False:
idade_2 = 17
possui_diploma = True
if idade_2 >= 18 and possui_diploma:
		print("O candidato não é maior de idade ou não possui diploma,")
		print(("portanto não é elegivel para o cargo")

Short-Circuit (Avaliação de Curto-Circuito) em and

Python é eficiente. Se a primeira expressão conectada pelo and for False, o interpretador nem sequer avalia a segunda expressão, pois o resultado final já é garantidamente False.

5.1.2. O Operador Lógico or (OU)

O operador or é o mais permissivo. Ele retorna True se pelo menos uma das expressões que ele conecta for verdadeira. Ele só retorna False se todas as condições forem falsas.

Expressão 1 Operador Expressão 2 Resultado
True or True True
True or False True
False or True True
False or False False

Exemplo 2: Verificação de Acesso (Critérios Alternativos)

Um usuário tem acesso de administrador se ele pertencer ao grupo 'Administrador' OU se o seu status for 'Super_User'.

grupo_usuario = "Visitante"
status_usuario = "Super_User"

# A condição completa é True se PELA MENOS UMA das partes for True.
acesso_liberado = (grupo_usuario == "Administrador") or (status_usuario == "Super_User")

if acesso_liberado:
    print("Acesso concedido: O usuário é Super_User.")
else:
    print("Acesso negado.")

# Teste com ambas as condições False:
grupo_2 = "Visitante"
status_2 = "Normal"
acesso_negado = (grupo_2 == "Administrador") or (status_2 == "Super_User")
print(f"\\nAcesso liberado (teste 2)? {acesso_negado}") # Saída: False

Short-Circuit (Avaliação de Curto-Circuito) em or