Booleanos
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
Elaboração própria.
Quais das seguintes expressões resultam em valores lógicos verdadeiros:
- “Açaí” ”sorvete”
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
Elaboração própria
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
Elaboração própria.
Selecione as opções que correspondem a valores lógicos em Python:
- true e false
- 0 e 1
- Papo-reto e Caô
- 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
Elaboração própria
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
IFC-SC, 2015 - adaptado
Analise as seguintes afirmativas sobre operadores do Python e assinale a alternativa correta:
- b %= a é equivalente a b = b % a.
- é 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.
- O operador ^ é responsável por fazer o potenciação.
- Somente a afirmativa I é verdadeira.
- As afirmativas I, II e III são verdadeiras.
- Somente as afirmativas I e III são verdadeiras.
- 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
Elaboração própria
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
Pense Python, adaptado
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
Elaboração própria
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.