Pular para o conteúdo
Editor

Booleanos em Python: comparações e operadores lógicos

Iniciante25 min6 exercícios90 XP

Este tutorial foi traduzido do original em inglês.Read in EnglishLeer en españolЧитать на русскомอ่านภาษาไทยAvisar sobre um erro de tradução

0/6 exercícios

Todos os dias você toma decisões de sim ou não. "Está chovendo?" "Tenho dinheiro suficiente?" "Minha senha está certa?" Os computadores tomam o mesmo tipo de decisão, e usam booleanos para isso.

Um booleano é um valor que é True ou False. Só isso: apenas duas opções. Pense em um interruptor de luz: ligado ou desligado, sim ou não, verdadeiro ou falso.

Neste tutorial, você vai aprender como o Python compara valores, combina condições e decide o que conta como "verdadeiro" ou "falso". Essas habilidades são a base de toda instrução if e de todo laço que você vai escrever.

O que são booleanos em Python?

O Python tem um tipo de dado embutido chamado bool. Ele tem exatamente dois valores possíveis: True e False. Repare no T maiúsculo e no F maiúsculo: isso faz diferença.

Criando variáveis booleanas
is_raining = True
has_umbrella = False
print(is_raining) # True
print(has_umbrella) # False
print(type(is_raining)) # <class 'bool'>
Saída
True
False
<class 'bool'>

Variáveis booleanas costumam começar com is_, has_ ou can_, para que o código se leia como uma frase em inglês. Por exemplo, is_logged_in ("está logado") ou has_permission ("tem permissão") diz exatamente o que a variável significa.


Como comparar valores em Python

A maioria dos booleanos não vem de digitar True ou False diretamente. Eles vêm de comparações. Quando você compara dois valores, o Python devolve um booleano.

Pense nos operadores de comparação como um jurado de um show de talentos. Você entrega duas coisas a ele, e ele responde "True" ou "False".

Os seis operadores de comparação
# Equal to
print(5 == 5) # True
print(5 == 3) # False
# Not equal to
print(5 != 3) # True
print(5 != 5) # False
# Greater than / Less than
print(10 > 5) # True
print(3 < 1) # False
# Greater or equal / Less or equal
print(5 >= 5) # True
print(3 <= 7) # True
Saída
True
False
True
False
True
False
True
True

Você pode guardar o resultado de uma comparação em uma variável. Isso é útil quando você quer verificar uma condição uma vez e usar o resultado várias vezes.

Guardando resultados de comparações
age = 20
min_age = 18
is_adult = age >= min_age
print(is_adult) # True
temperature = 35
is_hot = temperature > 30
print(is_hot) # True
Saída
True
True

Como comparar strings em Python

Você também pode comparar strings. O Python as verifica caractere por caractere, em ordem alfabética (tecnicamente, na ordem do Unicode). As letras maiúsculas vêm antes das minúsculas.

Comparando strings
# Equality checks
print("hello" == "hello") # True
print("hello" == "Hello") # False (case matters!)
# Alphabetical ordering
print("apple" < "banana") # True (a comes before b)
print("cat" > "car") # True (t comes after r)
# Case-insensitive comparison
name = "Alice"
print(name.lower() == "alice") # True
Saída
True
False
True
True
True

Como usar os operadores lógicos: and, or e not

Às vezes uma comparação só não é suficiente. Talvez você precise verificar se alguém tem idade suficiente e tem um ingresso. Ou se é sábado ou domingo. O Python oferece três operadores lógicos para combinar condições.

O operador "and"

O operador and retorna True apenas quando os dois lados são verdadeiros. Pense em uma porta com duas fechaduras: você precisa das duas chaves para abri-la.

Usando "and"
age = 20
has_ticket = True
# Both must be True
print(age >= 18 and has_ticket) # True
print(age >= 18 and not has_ticket) # False (one is False)
# Real-world example: login check
username_ok = True
password_ok = True
print(username_ok and password_ok) # True - access granted!
Saída
True
False
True

O operador "or"

O operador or retorna True quando pelo menos um dos lados é verdadeiro. Pense em uma porta com duas campainhas: qualquer uma delas faz alguém vir abrir.

Usando "or"
is_weekend = True
is_holiday = False
# At least one must be True
print(is_weekend or is_holiday) # True
print(False or False) # False (neither is True)
# Real-world example: discount eligibility
is_student = False
is_senior = True
gets_discount = is_student or is_senior
print(gets_discount) # True
Saída
True
False
True

O operador "not"

O operador not inverte um booleano. True vira False, e False vira True. É como apertar um interruptor de luz.

Usando "not"
is_raining = True
print(not is_raining) # False
print(not False) # True
# Useful for "if not" conditions
is_logged_in = False
print(not is_logged_in) # True - means "user is NOT logged in"
Saída
False
True
True

O que é a avaliação de curto-circuito em Python?

O Python é preguiçoso de um jeito inteligente. Ao avaliar and ou or, ele para assim que sabe a resposta. Isso se chama avaliação de curto-circuito.

Com and, se o primeiro valor for False, o Python nem se dá ao trabalho de verificar o segundo: o resultado já é False. Com or, se o primeiro valor for True, ele pula o segundo: o resultado já é True.

Avaliação de curto-circuito em ação
# "and" short-circuits on False
print(False and print("This won't run")) # False
# "or" short-circuits on True
print(True or print("This won't run")) # True
# Practical use: safe division
x = 0
# Without short-circuit, this would crash!
result = x != 0 and 10 / x > 2
print(result) # False (never tries 10 / 0)
Saída
False
True
False

O que são valores truthy e falsy em Python?

Um fato surpreendente: em Python, todo valor tem um "valor de verdade" (em inglês, truthiness). Não são só True e False que contam: qualquer valor pode ser tratado como verdadeiro ou falso.

Pense assim: a sua carteira está vazia ou tem alguma coisa dentro? Coisas vazias são "falsy" (contam como falsas). Coisas com conteúdo são "truthy" (contam como verdadeiras).

Valores falsy x truthy
# Falsy values - these all count as False
print(bool(0)) # False (zero)
print(bool(0.0)) # False (zero float)
print(bool("")) # False (empty string)
print(bool([])) # False (empty list)
print(bool({})) # False (empty dict)
print(bool(None)) # False (None)
# Truthy values - these all count as True
print(bool(1)) # True (any non-zero number)
print(bool(-5)) # True (negative numbers too!)
print(bool("hello")) # True (non-empty string)
print(bool([1, 2])) # True (non-empty list)
Saída
False
False
False
False
False
False
True
True
True
True

Como usar a função bool()

A função bool() converte qualquer valor no booleano equivalente. Ela mostra se o Python considera um valor truthy ou falsy.

Usando bool() para verificar valores
# Converting various values to booleans
print(bool(42)) # True
print(bool(0)) # False
print(bool("Python")) # True
print(bool("")) # False
print(bool(None)) # False
# Useful for checking if something "exists"
user_input = ""
if bool(user_input):
print("Got input!")
else:
print("No input provided") # This runs
Saída
True
False
True
False
False
No input provided

Na prática, raramente você precisa chamar bool() diretamente. O Python verifica o valor de verdade automaticamente nas instruções if. Escrever if name: é o mesmo que if bool(name):, só que mais curto.

Prolixo (desnecessário)
name = "Alice"
if bool(name) == True:
    print("Name is set")
Pythônico (limpo)
name = "Alice"
if name:
    print("Name is set")

Como usar comparações encadeadas em Python

O Python tem um truque bacana que a maioria das linguagens não tem: você pode encadear comparações, como faria em matemática. Em vez de escrever x > 1 and x < 10, você pode escrever 1 < x < 10.

Comparações encadeadas
age = 25
# Chained comparison (Pythonic)
print(18 <= age <= 65) # True - working age
# Same thing without chaining (longer)
print(age >= 18 and age <= 65) # True
# You can chain more than two
x = 5
print(1 < x < 10 < 100) # True - all comparisons pass
Saída
True
True
True

Comparações encadeadas se leem como a notação matemática. Elas são mais curtas e mais fáceis de entender à primeira vista. Use-as sempre que for verificar se um valor está dentro de um intervalo.


Erros comuns com booleanos em Python

Erro 1: usar = em vez de ==

Este é o erro com booleanos mais comum entre iniciantes. Um único = serve para atribuição (dar um valor a uma variável). O duplo == serve para comparação (verificar se dois valores são iguais).

Bug: atribuição em vez de comparação
score = 100
# A single = tries to assign 50 to score, which is not allowed in an if
# if score = 50:  # SyntaxError!
#     print("You got 50")
Correção: use == para comparar
score = 100
if score == 50:
    print("You got 50")
else:
    print("Not 50")

Erro 2: comparar tipos diferentes

Comparar uma string com um número pode dar resultados surpreendentes. A string "5" não é igual ao número 5. Eles são de tipos diferentes.

Comparando tipos diferentes
# String vs number - not equal!
print("5" == 5) # False
print("5" != 5) # True
# Convert first, then compare
user_input = "5"
print(int(user_input) == 5) # True
# Be careful with True/False and numbers
print(True == 1) # True (!) - True is actually 1
print(False == 0) # True (!) - False is actually 0
Saída
False
True
True
True
True

Exercícios práticos

Verifique se um número está no intervalo
Escreva o código

Crie uma variável num com o valor 42. Use uma comparação encadeada para verificar se num está entre 1 e 100 (incluindo os extremos). Exiba o resultado.

Saída esperada:

True
# Create num and check if it's between 1 and 100 (inclusive)
Valide o tamanho de uma string
Escreva o código

Crie uma variável word com o valor "Python". Verifique se a string não está vazia E tem mais de 3 caracteres. Exiba o resultado.

Saída esperada:

True
# Create word and check if it's non-empty AND longer than 3 characters
Preveja o resultado das operações lógicas
Preveja a saída

Sem executar o código, preveja o que cada linha vai exibir. Depois, execute-o para conferir as suas respostas.

O código exibe os resultados de três operações lógicas.

print(True and False)
print(True or False)
print(not True)
Corrija o bug da comparação
Corrija o erro

O código abaixo deveria verificar se status é igual a "active" e exibir o resultado. Mas ele tem um bug. Encontre e corrija.

Saída esperada:

True
status = "active"
result = status = "active"
print(result)
Verifique se um ano é bissexto
Escreva o código

Crie uma variável year com o valor 2024. Um ano é bissexto se:

  • For divisível por 4
  • Mas não for divisível por 100
  • A menos que também seja divisível por 400
  • Use o operador de módulo % e operadores lógicos para fazer a verificação. Exiba o resultado.

    Saída esperada:

    True
    # Check if 2024 is a leap year
    Avalie o valor de verdade com bool()
    Escreva o código

    Use a função bool() para exibir o valor de verdade destes valores, cada um em uma linha e exatamente nesta ordem:

    1. 0

    2. "hello"

    3. ""

    4. 42

    5. None

    Saída esperada:

    False
    True
    False
    True
    False
    # Print the truthiness of each value using bool()

    Tutoriais relacionados

    Este tutorial foi útil?