Booleanos em Python: comparações e operadores lógicos
Este tutorial foi traduzido do original em inglês.Read in EnglishLeer en españolЧитать на русскомอ่านภาษาไทยAvisar sobre um erro de tradução
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.
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".
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.
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.
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.
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.
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.
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.
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).
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.
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.
name = "Alice"
if bool(name) == True:
print("Name is set")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.
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).
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")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.
False True True True True
Exercícios práticos
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:
TrueCrie 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:
TrueSem 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.
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:
TrueCrie uma variável year com o valor 2024. Um ano é bissexto se:
Use o operador de módulo % e operadores lógicos para fazer a verificação. Exiba o resultado.
Saída esperada:
TrueUse 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