Módulo 4 - Variáveis e tipos de dados

Verdadeiro ou falso com bool: o tipo das decisões

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Escrever True e False corretamente, com a inicial maiúscula.
  • Gerar booleanos com os operadores de comparação, como > e ==.
  • Ler uma comparação como uma pergunta cuja resposta é True ou False.
  • Antecipar o papel do bool nas decisões com if, que chegam no módulo 7.

Um tipo com dois valores, e mais nenhum

Strings guardam textos infinitos, ints e floats guardam números sem fim. O quarto tipo do módulo vai na direção oposta: o bool tem exatamente dois valores possíveis, True e False, verdadeiro e falso. Parece pouco, e é justamente dessa economia que vem o poder. Toda decisão que um programa toma, mostrar ou esconder, aprovar ou reprovar, continuar ou parar, se resume no fim das contas a uma pergunta com resposta booleana.

tem_desconto = True
cadastro_completo = False

print(tem_desconto)
print(cadastro_completo)

# Saída:
# True
# False

Dois booleanos guardados em variáveis. Sem aspas: True é um valor da linguagem, não um texto.

Três detalhes de escrita evitam os tropeços clássicos. Primeiro, a inicial é maiúscula: True e False, exatamente assim. Escrever true minúsculo, como em outras linguagens, faz o Python procurar uma variável chamada true e reclamar com NameError. Segundo, sem aspas: "True" entre aspas é uma string comum de quatro letras, não um booleano, e essa confusão gera bugs difíceis de enxergar. Terceiro, o nome do tipo homenageia George Boole, o matemático inglês do século dezenove que formalizou a lógica de verdadeiro e falso muito antes de existir computador.

De onde os booleanos nascem: comparações

Digitar True e False à mão, como nos exemplos acima, é o uso menos comum do tipo. Na vida real, booleanos nascem de comparações: você pergunta algo ao Python sobre dois valores, e ele responde True ou False. Os operadores de comparação são seis, e quatro deles vêm direto da aula de matemática: > maior, < menor, >= maior ou igual, <= menor ou igual. Os outros dois pedem atenção: == com dois iguais pergunta se os valores são iguais, e != pergunta se são diferentes.

idade = 20

print(idade >= 18)
print(idade > 65)
print(idade == 20)
print("Ana" == "ana")

# Saída:
# True
# False
# True
# False

Cada comparação devolve um bool. A última mostra que strings também se comparam, e maiúscula conta.

O dobro de igual existe por necessidade: o sinal único já estava ocupado com a atribuição, desde a primeira aula do módulo. idade = 18 guarda o 18 na variável; idade == 18 pergunta se o valor guardado é 18 e devolve o veredito. Trocar um pelo outro é o erro de digitação mais cometido da história da programação, sem exagero, e o Python ajuda: usar um = sozinho onde cabia uma pergunta costuma gerar SyntaxError, apontando a linha.

Repare que a comparação funciona com qualquer tipo que você conheceu no módulo: números com números, strings com strings. "Ana" == "ana" devolve False porque, para o Python, A maiúsculo e a minúsculo são caracteres diferentes, o mesmo comportamento que você viu nos nomes de variáveis. Comparar tipos misturados também é possível: 7 == "7" devolve False sem erro, porque um int nunca é igual a uma string, um gancho direto para a aula de type() que vem a seguir.

Para que servem: a resposta que decide

Se booleanos são respostas, quem faz as perguntas? Por enquanto, o print, só para você ver o resultado na tela. A partir do módulo 7, quem pergunta é o if, a estrutura de decisão: se a condição for True, o programa executa um caminho; se for False, executa outro. Todo controle de fluxo do Python, if, while, for com condição, gira em torno de expressões que devolvem bool. É por isso que este módulo apresenta o tipo antes: quando o if chegar, você já vai dominar a matéria-prima dele.

senha = "python123"
senha_valida = len(senha) >= 8
print(senha_valida)

# Saída:
# True

Um gostinho do mundo real: len() mede a senha, a comparação responde se o tamanho mínimo foi atingido.

O exemplo acima junta três aulas do módulo numa linha: len() devolve um int, a comparação >= transforma o int numa resposta booleana, e a variável senha_valida guarda o veredito com um nome que se lê como frase. Nomear booleanos assim, com prefixos como tem_, e_valido ou esta_ativo, é um hábito de código limpo: quem lê if senha_valida entende a decisão sem olhar o resto. Guarde a receita; ela volta na prática do módulo e em todos os módulos seguintes.

Teste rápido

Qual a diferença entre idade = 18 e idade == 18?

Perguntas frequentes

Por que True e False têm que começar com maiúscula?
Porque é assim que os dois valores foram definidos na linguagem: True e False são palavras reservadas do Python com essa grafia exata. Escrever true ou FALSE faz o Python procurar uma variável com esse nome e falhar com NameError. É diferente de linguagens como JavaScript, onde o minúsculo é o certo.
"True" com aspas é a mesma coisa que True?
Não. Com aspas é uma string de quatro caracteres que por acaso soletra True; sem aspas é o valor booleano. São tipos diferentes, e True == "True" devolve False. Esse é um bug clássico de iniciante: o programa roda, mas as decisões saem erradas porque a variável guardava texto, não booleano.
Para que serve o operador != ?
Ele pergunta se dois valores são DIFERENTES: 5 != 3 devolve True, e 5 != 5 devolve False. É o oposto exato do ==. O ponto de exclamação vem da tradição das linguagens de programação, onde ! significa negação.
Posso comparar textos com > e <, tipo "ana" < "bruno"?
Pode: o Python compara strings pela ordem dos caracteres, parecida com a ordem alfabética, e "ana" < "bruno" devolve True. O cuidado é que maiúsculas vêm antes das minúsculas nessa ordem interna, então "Zebra" < "ana" também é True. Para o curso, use > e < entre strings só quando a ordem importar de verdade.
O que acontece se eu comparar tipos diferentes, como 7 == "7"?
Com o operador de igualdade, nada quebra: o Python responde False, porque um int nunca é igual a uma string. Já comparar tipos diferentes com > ou < gera TypeError, porque não existe ordem entre número e texto. A aula de type(), a seguir, mostra como converter antes de comparar.
Vou usar bool antes do módulo 7?
Sim, já na prática deste módulo, guardando o resultado de uma verificação numa variável de nome claro. E as comparações aparecem no módulo 6, dedicado aos operadores. O if do módulo 7 só cola tudo: ele lê o booleano e escolhe o caminho do programa.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.