Quando começamos a programar, rapidamente percebemos que um programa precisa tomar decisões. Ele precisa verificar se um usuário digitou a senha correta, confirmar se uma idade é suficiente para acessar determinado conteúdo ou decidir se deve continuar ou encerrar sua execução.

Essas decisões são feitas por meio de expressões lógicas. Em Python, os três principais operadores lógicos são:

  • and

  • or

  • not

Embora pareçam simples, eles estão presentes em praticamente qualquer sistema desenvolvido atualmente.

Neste artigo você aprenderá como cada um funciona, como o Python avalia condições e quais são os erros mais comuns cometidos por iniciantes.


O que é uma expressão lógica?

Uma expressão lógica é qualquer expressão que produz apenas dois resultados possíveis:

True

ou

False

Exemplo 1

10 > 5

Resultado:

True

Exemplo 2

10 < 5

Resultado:

False

Esses valores são chamados de booleanos.


O operador and

O operador and significa E.

Ele exige que todas as condições sejam verdadeiras.

Imagine duas portas de segurança. Somente quando as duas estiverem abertas você poderá entrar.

Tabela verdade do and

Condição 1     Condição 2     Resultado

True           True           True
True           False          False
False          True           False
False          False          False

Observe que basta uma condição ser falsa para todo o resultado se tornar falso.

Exemplo

idade = 20
tem_carteira = True

if idade >= 18 and tem_carteira:
    print("Pode dirigir.")

As duas condições precisam ser verdadeiras.

Aplicando ao programa

Seu código utiliza exatamente essa lógica.

if entrada == 'ENTRAR' and senha_digitada == senha:

O Python verifica duas perguntas:

  1. A pessoa digitou ENTRAR?

  2. A senha está correta?

Somente quando ambas forem verdadeiras:

True and True

o programa entra no bloco de código.


O operador or

O operador or significa OU.

Basta uma condição ser verdadeira para que o resultado também seja verdadeiro.

Tabela verdade do or

True  or True  = True
True  or False = True
False or True  = True
False or False = False

Exemplo

if cor == "azul" or cor == "verde":
    print("Cor permitida")

Mesmo que apenas uma comparação seja verdadeira, o bloco será executado.


O operador not

O operador not significa NÃO.

Sua função é inverter um valor lógico.

Exemplo

ativo = True

print(not ativo)

Resultado:

False

Outro exemplo

senha_correta = False

if not senha_correta:
    print("Acesso negado")

Como o Python avalia o operador and

Uma característica muito importante é o curto-circuito (Short Circuit Evaluation).

Veja:

False and qualquer_coisa()

O Python nem executa qualquer_coisa().

Por que isso acontece?

Porque ele já sabe que o resultado nunca poderá ser verdadeiro.

Isso torna o código mais eficiente e evita executar operações desnecessárias.


Valores Falsy

Nem tudo em Python é apenas True ou False.

Existem valores que são considerados falsos automaticamente.

São eles:

0
0.0
''
[]
{}
()
False
None

Todos esses valores, quando utilizados em uma condição como:

if valor:

serão avaliados como False.


Valores Truthy

Qualquer valor diferente dos anteriores será considerado verdadeiro.

Exemplos

1
5
-10

"Python"

[1, 2, 3]

{"nome": "Tiago"}

True

Todos esses valores são avaliados como True.


Fluxograma do programa

            Início
               │
               ▼
      Digita ENTRAR ou SAIR
               │
               ▼
       Entrada = ENTRAR?
          │            │
         Sim          Não
          │            │
          ▼            ▼
     Digita senha     Entrada = SAIR?
          │            │
          ▼            │
    Senha correta?     │
      │         │      │
     Sim       Não     │
      │         │      │
      ▼         ▼      ▼
 Programa   Senha    Programa
 iniciado  incorreta encerrado
                  │
                  ▼
          Opção inválida

Código final

entrada = input("Entrar ou Sair: ").upper()
senha_digitada = input("Senha: ")

senha = "123456"

if entrada == "ENTRAR" and senha_digitada == senha:
    print("Programa iniciado!")

elif entrada == "ENTRAR" and senha_digitada != senha:
    print("Senha incorreta!")

elif entrada == "SAIR":
    print("Programa encerrado!")

else:
    print("Digite uma opção válida.")

Conclusão

Os operadores lógicos and, or e not formam a base da tomada de decisões em Python. Eles permitem combinar condições, criar regras de acesso e controlar o fluxo de execução de um programa de maneira clara e eficiente.

No exemplo desenvolvido, vimos como utilizar o and para exigir que o usuário informe tanto a opção ENTRAR quanto uma senha correta antes de permitir o acesso ao sistema. Também aprimoramos a experiência do usuário adicionando mensagens específicas para senha incorreta, encerramento do programa e opções inválidas.

Além disso, compreendemos como o Python interpreta valores booleanos, o conceito de curto-circuito (Short Circuit Evaluation) e a diferença entre valores truthy e falsy. Esses conceitos aparecem constantemente em aplicações reais, desde pequenos scripts até sistemas web e APIs.

Dominar esses operadores logo no início da jornada em Python facilita o aprendizado de estruturas mais avançadas, como laços de repetição, funções, tratamento de exceções e programação orientada a objetos. Quanto mais você praticar criando condições e analisando o fluxo do programa, mais natural será escrever códigos corretos, legíveis e eficientes.