Teoria

Um booleano é um dado lógico muito utilizado para comparações, por ele pode ter apenas dois valores True (verdadeiro) ou False (falso).

📢 Clique para ver mais:

Bora aprender como usar booleanos em Python?!

Operações de Comparação

Os tipos de dados chamados Booleanos podem ser criados a partir de comparações. Eles nos dizem se algumas comparações são verdadeiras ou falsas. Vou te mostrar algumas formas de fazer isso! Primeiro, olha esse código:

print(2==3)

O resultado da expressão “2 == 3” é falsa, isso porque 2 não é igual a 3. O operador que verifica igualdade em Python é dois símbolos de igualdade seguidos. Outro operador de comparação é o !=, esse verifica se os valores são diferentes. Olha:

A=1

B=2

C=”Madonna”

D=”Will Smith”

print(A!= B)

print(C=D)

O primeiro retornou True pois as variáveis A e B realmente são diferentes, uma é 1 e a outra 2. Você perguntou se são diferentes e o True é a forma de Python dizer “sim”.

Mas além desses, a gente também pode verificar se um valor é maior que outro usando os operadores de maior e menor, igual lá na matemática.

x=10.0

print(x> 5)

print(20<x)

print(10>=x)

E o resultado deste código, é True, False e True. No último caso a gente usou um operador novo, o maior igual (“>=”). Esse operador diz pra gente se o número da esquerda é maior ou igual ao da direita.

Comparação Alfabética

Os operadores de maior e menor também podem ser usados com strings. Mas o que significa um texto ser menor que outro?!

Na verdade não é a quantidade de letras que está sendo verificada. O que acontece é que Python checa a ordem alfabética. Olha esse exemplo aqui:

Fruta_1=”abacaxi”

Fruta_2=”maçã”

Fruta_3=”Pera”

print( Fruta_1>Fruta_2)

print( Fruta_3<Fruta_2)

O resultado foi False no primeiro caso porque, alfabeticamente, “abacaxi” vem antes. Mas no segundo caso, mesmo a Fruta_3 começando com “P”, o resultado foi True Isso aconteceu porque o “P” tá maiúsculo. Em Python, todo o alfabeto de letras maiúsculas vêm antes das minúsculas!

Comparação em Cadeia

A gente viu como fazer comparações entre dois valores, mas não precisam ser apenas dois. É possível fazer algumas comparações em cadeia. Olha:

idade=20

é_adolescente=18>idade>13

print(é_adolescente)

Como a idade não está entre 18 e 13, o resultado da expressão é False. Esse resultado é armazenado na variável “é_adolescente” e depois exibido pela função print()!

Agora vamos praticar com exercícios?

Comparação Alfabética

Comparação em Cadeia

Exercícios Resolvidos

Exercício Resolvido #1

Quais das seguintes expressões resultam em valores lógicos verdadeiros:

  • 5,10 < 10
  • “Açaí” > ”sorvete”
  • 0.1 + 0.2 = = 0.3
  • 666

Passo 1

Fala aí! Essa questão obriga a gente a lembrar dos operadores lógicos e suas aplicações. Vamos olhar pra uma expressão de cada vez e tentar identificar qual o resultado da expressão, se será True ou False, beleza? A questão pede os que serão True. Vamos começar analisando a primeira!

Nessa primeira, estamos comparando um número real (do tipo float) com um número inteiro. Com o uso do operador “menor que”, a gente tá perguntando se número da esquerda é menor que o número da direita. Com isso, a resposta é True! Pois 5.10 realmente é menor que 10, né?? Então! Por isso a resposta vai ser “sim”, e computadores dizem sim usando True, beleza?!

Show! Vamos pra segunda.

Passo 2

No segundo passo tem a comparação entre strings. Estamos perguntando se a String da esquerda é “maior” que a da direita, alfabeticamente falando. Essa pergunta pode ser traduzida pra “Açaí vem depois de sorvete na ordem alfabética?”. E, por isso, a resposta é não. False. Nesse caso, também é importante lembrar que todo alfabeto minúsculo é considerado maior que o maiúsculo, ok?! O “s” minúsculo vem depois do “A” maiúsculo na ordem alfabética, por isso é maior.

Vamos analisar o próximo item!

Passo 3

Olha, se a gente fizer essa conta de cabeça, parece que a resposta é True, né?! 0.1+0.2 realmente dá 0.3. Mas acontece que, nesse caso, a resposta é False. Isso acontece por causa da imprecisão dos números reais em Python. Lembra que em Python só as primeiras 16 casas são precisas? Então! Olha o que acontece se você somar 0.1+0.2:

Viu?! Esse número realmente não é igual a 0.3! Por isso a resposta é False. Cuidado quando você for fazer comparações de igualdade com números reais, ok?! Esse 4zinho ali com certeza ia te dar dor de cabeça!

Partiu analisar o último item!

Passo 4

Ih, rapaz! Essa opção não tem nenhum operador relacional. Mas cê lembra que True e False são apelidos pra 1 e 0, respectivamente? Isso porque os computadores reconhecem 0 como False, e True pra qualquer outro valor diferente de 0, ok?

Nesse código a gente tá transformando os valores em booleanos e depois exibindo o resultado. Se liga no que acontece depois que a gente executa:

Viu?! Só foi False quando a gente usou 0, e qualquer outro valor diferente de 0 foi considerado True, beleza?!

*** Observação: além do 0, o valor None também é considerado False, mas o valor None é inútil e por isso a gente finge que ele não existe, ok?!

Show! Acabamosss!

Resposta

Apenas a primeira e a última expressões retornam True.

Exercício Resolvido #2

Qual o valor lógico resultante da seguinte expressão:

3 == 3.0

Passo 1

Cara, não tem como a gente fazer operações com dados de diferentes tipos. Mas mesmo assim a gente usa int e float juntos com frequência e tudo funciona numa boa. Então o que tá acontecendo?!

Mas acontece que o uso de números inteiros e reais na mesma expressão é uma coisa tão comum que Python faz a conversão automaticamente pra gente.

Nesse caso, 3 é um número inteiro e 3.0 um número real. A primeira coisa que seu computador vai fazer se você executar esse código é converter o 3 inteiro pra real. Então, depois da conversão automática, vai ficar assim:

E aí a expressão lógica que Python vai resolver é “3.0 == 3.0”, que vai retornar em True, ok?! Se liga que os números reais só ficam com a precisão louca se a gente fizer conta com eles. Se a gente não fizer conta, fica certinha, beleza?!

Valeu!

Resposta

True

Exercício Resolvido #3

Selecione as opções que correspondem a valores lógicos em Python:

  1. true e false
  2. 0 e 1
  3. Papo-reto e Caô
  4. Nenhuma das alternativas anteriores

Passo 1

Bom, se você escolheu a alternativa a), PARABÉNS!! Você errou.

Esse item nada mais é do que uma pegadinha, pois Python se trata de uma linguagem de programação case sensitive, isso é, diferencia caracteres maiúsculos e minúsculos.

Por esse motivo, a alternativa a) está errada.

Passo 2

1 e 0 são equivalentes a True e False, ou seja, podemos utilizá-los como valores lógicos.

Logo, a alternativa b) está correta.

Passo 3

Bom, mas por que o item c) está errado?

Pois, Papo-reto e Caô não estão entre aspas duplas, sendo assim não são strings e passam a ser interpretados como comandos. Esses, por sua vez, não estão presentes na linguagem Python.

Resposta

Portanto, b) é a alternativa correta.

Exercício Resolvido #4

Determine todos os valores de x satisfazem a seguinte expressão booleana:

Passo 1

Cara! Uma expressão booleana é simplesmente um pergunta de verdadeiro ou falso. Essa questão quer saber quais os valores de x que a gente pode usar pra que a expressão seja verdadeira. Pra isso, vamos analisar um operador de cada vez.

No lado esquerdo, precisamos de valores de x que sejam menores do que 10 pra que a parte esquerda da expressão seja verdade. No lado direito, é necessário que x tenha valores maiores que doze pra que essa condição seja verdadeira.

Cara, tu percebeu que não dá pra satisfazer os dois lados ao mesmo tempo??! Ou o valor de x é maior que 12, ou é menor que 10. Não tem como ser os dois ao mesmo tempo, independente de qual seja o valor de x beleza?!

Por isso, a resposta desse exercício é que não há valores que satisfazem a expressão.

Resposta

Não há valores que satisfazem a expressão.

Exercício Resolvido #5

Analise as seguintes afirmativas sobre operadores do Python e assinale a alternativa correta:

  1. b %= a é equivalente a b = b % a.
  2. é o operador de comparação que significa “diferente de” em Python. O operador != também é, mas este é um operador obsoleto e não se recomenda mais sua utilização.
  3. O operador ^ é responsável por fazer o potenciação.
  1. Somente a afirmativa I é verdadeira.
  2. As afirmativas I, II e III são verdadeiras.
  3. Somente as afirmativas I e III são verdadeiras.
  4. Somente as afirmativas II e III são verdadeiras.

Passo 1

Fala aí, doido! Vamo analisar cada uma das afirmações, começando do começo, ok?!

Cara, na primeira afirmativa o doido tá dizendo que b %= a é equivalente a b = b % a. E é isso mesmo, tá certo! Os operadores matemáticos podem ser escritos no formato in-place, que é quando a gente põe o operador junto do sinal “=”. Olha mais alguns exemplos:

Viu? Se você for mó preguiçoso igual a mim você pode usar os operadores in-place! Hihihi mas não são obrigatórios, ok?!

Show! Essa afirmativa tá certa, então vamos olhar a segunda!

Passo 2

Agora o cretino tá dizendo que é um operador de desigualdade. A maldade dessa afirmativa é que, antigamente, era verdade. Na verdade, o operador funcionava até a versão 3 de Python, junto com o !=. Depois disso, se tornou obsoleto e agora a gente só tem o “!=”.

Percebeu que é exatamente o contrário do que tá na afirmativa?! Sacanagem, tentaram confundir nós!!! Mas a gente percebeu, ufa!

ESSA É FALSAAA!

Passo 3

Ih! Essa aqui tá dizendo que o operador de potenciação é “^”. Mas isso é caô, a gente tá ligado que o operador de potenciação é o “**”, pô! Por isso, essa aqui também é falsa.

Mas se tu testar esse operador no python, vai ver que acontece umas coisas loka. Isso porque o “^” é um operador sim, chamado XOR. Mas esse é um assunto avançadinho que a gente não precisa tratar agora, beleza?!

Já que a única verdadeira é a primeira, então a alternativa certa é a A, ok??!

Valeu!

Resposta

Alternativa A.

Exercício Resolvido #6

Escreva um programa que recebe dois números e exibe True caso esse o segundo seja maior que o primeiro.

Passo 1

Vamo começar pedindo os números pro usuário, beleza?! Pra isso a gente tem que usar a famosa função input().

Repara que o enunciado não tá especificando se os números vão ser inteiros ou reais. Por isso, a gente vai usar float! O tipo float consegue guardar números inteiros também, lembra?! Beleza! Agora vamos exibir a comparação!

Passo 2

Cara, a gente precisa comparar os dois números. O enunciado quer que a resposta seja True se o segundo for maior que o primeiro, né?!

Repara que o resultado dentro da variável “comparação” vai ser do tipo Boolean, e se o segundo for maior que o primeiro, vai ser True. Antes de tudo, queria te falar que não é boa ideia usar nomes de variável com acentos, esse “ç” e caracteres especiais, ok?!

Quando a gente usa caracteres especiais, somos obrigados a salvar o arquivo de um jeito diferente (especificando que tem caracteres especiais). O macetinho é você nunca usar caracteres especiais pra não ter risco de dar ruim na hora que seu professor for ler, beleza?! Por isso eu vou trocar o nome.

Passo 3

Show! Agora a gente já tem armazenado na variável “comparacao” o resultado da comparação entre os números. Agora a gente só precisa exibir pro usuário, e a gente faz isso usando a função print(), é claro!

Agora o resultado da comparação vai ser exibido pro usuário. Talvez você esteja se perguntando se dá pra gente personalizar a mensagem de acordo com o resultado da comparação, e eu te digo que dá!! A gente vai aprender mais pra frente, beleza?! Te espero lá!

Resposta

Exercício Resolvido #7

Quais das seguintes é uma expressão booleana? Selecione todos que são.

a) True

b) 3 == 4

c) 3 + 4

d) 3 + 4 == 7

e) "False"

Passo 1

Vamos analisar uma por uma pra verificar quais são expressões booleanas. Começando com a alternativa A, True já é por si só um valor booleano. Todas as expressões booleanas resultam em True ou False, por isso o próprio True já é por si só uma expressão booleana, ok?!

Show, vamos pro segundo.

Passo 2

Na segunda alternativa a gente tem uma comparação entre dois valores numéricos. O operador “==” verifica se ambos os valores são equivalentes, resultando em True ou False.

Por isso, também é uma expressão booleana, ok?

Passo 3

Na alternativa C a tem uma expressão matemática, e o resultado de uma expressão matemática é um número! Se o resultado é diferente de True ou False, então não é uma expressão booleana, ok?

Essa aqui não é.

Passo 4

Agora, na alternativa D, a gente tem operadores dos dois tipos. Mas acontece que os operadores matemáticos têm maior precedência, e por isso a soma vai ser feito antes da verificação.

Logo após a soma ser feita, resultando em um número, esse resultado vai ser comparado com o 7 do lado direito. Se forem iguais o resultado será True, ou False caso contrário.

Se o resultado é True ou False, então é uma expressão booleana, beleza?? Essa aqui também é!

Passo 5

Cara! Na alternativa E tem um False, mas ele tá entre aspas. Isso significa que é uma string, é um texto com a palavra False dentro. Não tem nada a ver com booleans, ok?!

SE ESTIVER ENTRE ASPAS É STRING E PONTO! Não se esquece disso, mano!

Resposta

As alternativas A, B e D são expressões booleanas.

Exercício Resolvido #8

Considere o código abaixo e responda à pergunta:

Ao executar esse programa, qual será o valor nas variáveis b, c e d?

Passo 1

Bora analisar todas as linhas e responde uma pergunta de cada vez, ok?! Começando com a variável b. Dentro dela vai ter o valor da String “False” convertido pra boolean. Mas cara, na variável “a” era uma String.

Lembra que todos os valores, exceto 0 e None, são considerados True por Python? Então... A string “False” não é zero e nem None. Por isso, ao converter pra boolean o resultado vai ser True, ok?!

É comum a gente achar que converter a string “False” pra boolean resulta em False, mas não é verdadeeee. O resultado é True, e esse é o valor na variável b. Beleza, vamos analisar a próxima!

Passo 2

Na variável c vai ser armazenado o tipo do valor na variável b. Como a gente viu no passo 1, dentro da variável b vai ter um boolean, True. Logo, na variável “c” vai ficar guardado o tipo da variável “b”, que é boolean. Sacou?? Beleza!

Vamos pra próxima!

Passo 3

Cara, aqui a gente tá multiplicando uma variável do tipo boolean por um número. Então, antes eu preciso te lembrar que os nomes True e False são, na verdade, apelido pra valores 1 e 0.

Na variável “b” a gente tava guardando um valor booleano True, que é igual a 1. Se a gente multiplicar 3 por True, que é igual a 1, o resultado vai ser 3 mesmo!

Esse vai ser o valor dentro da variável d depois que o programa for executado, beleza?!

Resposta

True, boolean e 3, respectivamente.