Introdução
Enquanto valores numéricos possuem uma infinidade de valores possíveis, os valores booleanos só possuem dois valores possíveis: verdadeiro (True) ou falso (False).
Neste capítulos vamos explorar as variáveis e valores booleanos e as operações que podemos executar com estes valores.
Valores Booleanos
Variáveis booleanas só podem receber como valores True ou False. Atenção, o primeiro caractere é em letra maiúscula, T ou F, e um erro será gerado se você não respeitar esta regra.
#Valores booleanos True ou False
>>> autorizado = True
>>> autorizado
True
>>> autorizado = False
>>> autorizado
False
>>> autorizado = true
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'true' is not defined. Did you mean: 'True'?
Operadores relacionais
Os operadores relacionais são operadores que retornam um valor booleano, e utilizados para comparar valores.
Operadores Relacionais | Representação | Exemplo |
igual | == | if (A == B) : |
diferente | != | if (A != B) : |
maior | > | if (A > B) : |
menor que | < | if (A < B) : |
maior ou igual a | >= | if (A >= B) : |
menor ou igual a | <= | if (A <= B) : |
#Operadores Relacionais em ação
>>> name = "Joao"
>>> name == "Joao"
True
>>> name == "Jose"
False
>>> 12 > 3
True
>>> 12 != 11
True
>>> 22 <= 22
True
>>> -1 < 0
True
O operador == é a igualdade lógica, ele analisa se dois valores são iguais, retornando verdadeiro ou falso. É diferente do operador de atribuição =, que atribui o valor para a variável.
Os operadores == (igual) e != (diferente) são capazes de comparar valores de diferentes tipos de dados, por exemplo, comparar um número com uma string. Enquanto os outros operadores só podem ser utilizados na comparação entre números, que podem ser inteiros e de ponto flutuante, ou na comparação entre strings.
As strings possuem a classificação alfabética, isso significa que a ordem alfabética define se uma palavra é maior, menor que outra. Letras minúsculas são “maiores” que as maiúsculas e strings numéricas são menores que “letras”.
Finalmente, valores booleanos, podem ser considerados numéricos. Em Python, o valor False é igual a zero e qualquer outro valor é True.
Veja alguns exemplos:
#Operadores Relacionais e tipos de dados
>>> 12 == "12"
False
>>> 12 != "12"
True
>>> 15.0 == 15
True
>>> 3 > 2.999
True
>>> "casa" > "abacate"
True
>>> "aviao" >= "abacaxi"
True
>>> "aviao" > "A"
True
>>> "Aviao" > "a"
False
>>> "1" > "a"
False
>>> "0" > "A"
False
>>> "1" < "A"
True
>>> "A" < "a"
True
>>> True == 1
True
>>> False == 0
True
>>> True == 1.0
True
>>> True == 1.0
True
>>> False == 0
True
>>> True > -2
True
>>> False > -2
True
>>> True > False
True
O valor None
Em Python, temos um valor especial “None”. Ele é utilizado quando definimos uma variável mas não queremos armazenar nenhum valor.
O valor None pode ser utilizado na igualdade lógica.
#Valor None
>>> idade = None
>>> print(idade)
None
>>> print(idade == None)
True
É uma prática comum, definirmos nossas variáveis no início do nosso código e atribuir o valor None quando não temos os valores a serem utilizados. Desta forma, fica fácil de identificar quais variáveis você tem em sua aplicação.
Operadores lógicos
Operadores lógicos são operadores que utilizam somente valores booleanos.
Como operadores lógicos, temos a conjunção (and), a disjunção (or) , o ou exclusivo (^) e a negação (not).
Operadores Lógicos | Representação | Exemplo |
conjunção (e) | and | A and B |
disjunção (ou) | or | A or B |
ou exclusivo (xor) | ^ | A ^ B |
negação (não) | not | not A |
O operador de negação é o único que possui somente um operando, uma variável ou valor.
Conjunção ou o “E” lógico (and)
A conjunção é o nosso “e” lógico, veja a expressão:
- Se for sábado E chover, ficarei em casa assistindo filme.
Quando esta expressão é verdadeira? Quais condições devem ocorrer para que eu fique em casa assistindo filme? Ora, para ficar em casa assistindo filme, tem que ser sábado E estar chovendo. Ambas devem ser satisfeitas!
Se tomarmos:
- variável A = hoje é sábado
- variável B = está chovendo
E os possíveis valores para A (verdadeiro ou falso) e para B (verdadeiro ou falso), podemos montar a seguinte tabela (denominada tabela-verdade) com todas as possibilidades e possíveis valores para o and.
Variável A | Variável B | and |
Verdade | Verdade | Verdade |
Verdade | Falso | Falso |
Falso | Verdade | Falso |
Falso | Falso | Falso |
CONCLUSÃO: uma conjunção, (A and B), é verdadeira somente se ambos os valores forem verdadeiros. Somente se A é verdadeiro e B é verdadeiro.
Disjunção ou o “OU” lógico (or)
A disjunção ou o “ou” lógico é diferente do “ou” falado no português. Veja a seguinte sentença:
- Quando vou ao trabalho OU de trem OU de ônibus, levo meu almoço.
Analisando a expressão acima, quando vou ao trabalho de trem, levarei meu almoço. Assim como, quando vou ao trabalho de ônibus, também levo meu almoço. Mas a sutileza é que se AMBOS forem verdadeiros, eu também levarei meu almoço.
Representando:
- variável A = vou de trem
- variável B = vou de ônibus
Teremos a seguinte tabela verdade, para o operador OU (or)
Variável A | Variável B | or |
Verdade | Verdade | Verdade |
Verdade | Falso | Verdade |
Falso | Verdade | Verdade |
Falso | Falso | Falso |
CONCLUSÃO: uma disjunção, (A or B), é verdadeira se pelo menos um dos valores for verdadeiro, seja A, seja B ou ambos.
Ou exclusivo (^)
O “ou” exclusivo é mais próximo do “ou” falado no português, ele só retorna verdade se somente uma condição é verdadeira. Veja a seguinte sentença:
- Ou João está trabalhando ou João está descansando
Representando:
- variável A = João está trabalhando
- variável B = João está descansando
Teremos a seguinte tabela verdade, para o operador OU-EXCLUSIVO (^)
Variável A | Variável B | ^ |
Verdade | Verdade | Falso |
Verdade | Falso | Verdade |
Falso | Verdade | Verdade |
Falso | Falso | Falso |
CONCLUSÃO: o ou-exclusivo, (A ^ B), é verdadeiro se somente um dos valores for verdadeiro, seja A ou B.
Negação (not)
O operador de negação é um inversor de valor booleano. Ele transforma um valor verdadeiro em falso e vice-versa.
Sua tabela verdade é mais simples, porque utiliza somente um operando.
Variável A | !A |
Verdade | Falso |
Falso | Verdade |
Imprimindo os operadores lógicos
O programa abaixo imprime os valores possíveis do operador and.
#Exemplo - and.py
print(True and True)
print(True and False)
print(False and True)
print(False and False)
#Saída - and.py
True
False
False
False
Agora é a sua vez! |
Implemente os valores possíveis para os outros operadores lógicos e salve os arquivos:
|
Usando operadores relacionais e lógicos
Como vimos, os operadores relacionais retornam como resultado valores booleanos e sabemos que operadores lógicos operam sobre valores booleanos. Desta forma, é comum escrevermos programas com expressões mais complexas, envolvendo operadores relacionais e lógicos.
Observe os exemplos abaixo e tente entender a lógica envolvida no cálculo do resultado:
#Expressões com operadores lógicos, relacionais e matemáticos.
>>> (10 > 7) or (5 < 4)
True
>>> (10 > 7) and (5 < 4)
False
>>> not (10 > 7)
False
>>> (2 * 5 % 2 == 0)
True
>>> (2 * 3 <= 5) and (2**3 > 10) or not(5 == 3)
True
Os operadores matemáticos tem maior precedência que os operadores relacionais, que por sua vez são executados antes dos operadores lógicos.
Em expressões lógicas, o not tem prioridade de execução, seguido respectivamente pelo and e o or.
Erros comuns
Não é possível comparar números com string, com os operadores >, >=, <, <=.
#Não utilize >, >=, <, <= para comparar números com strings
>>> 1 > "1"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'int' and 'str'
Top comments (0)