Operadores lógicos¶
Há três operadores lógicos: and
, or
, e not
. O significado
desses operadores é similar ao seu significado em Português.
Por exemplo, x > 0 and x < 10
é verdadeiro somente se x
é maior que 0 e
ao mesmo tempo, x é menor que 10. Como você diria isso em Português? Você poderia dizer que
x está entre 0 e 10, não incluindo o 0 e 0 10.
n % 2 == 0 or n % 3 == 0
é verdadeiro se qualquer uma das condições é verdadeira,
isto é, se o número é divisível por 2 ou divisível por 3. Neste caso, qualquer uma das partes (ou ambas)
deve ser verdadeira para que o resultado seja verdadeiro.
Finalmente, o operador not
inverte o resultado da expressão booleana, de forma que not x > y
é verdadeiro se x > y
é falso, ou seja, se x
é menor ou igual a y
.
Erro comum!
Há um erro muito comum que ocorre quando um programador tenta escrever uma expressão booleana. Por exemplo, o que acontece se tivermos uma variável
numero
e desejamos verificar se o seu valor é 5, 6, ou 7? Em palavras, poderíamos dizer: “número igual a 5 ou 6 ou 7”. Porém, se traduzirmos
isso para Python, numero == 5 or 6 or 7
não estará correto! O operador or
precisa juntar os resultados de três testes de igualdade.
Ou seja, a forma correta de escrever isso é numero == 5 or numero == 6 or numero == 7
. Pode parecer muita digitação, mas é completamente
necessário! Você não pode usar um “atalho”.
Veja se você entendeu!
-
selecao-2-1: Qual é a expressão Python correta para verificar se um número armazenado na variável x está entre 0 e 5?
- x > 0 and < 5
- Cada comparação precisa ser feita entre exatamente dois valores. Neste caso, a expressão da direita < 5 não tem um valor à esquerda.
- 0 < x < 5
- Este pode confudir! Apesar que várias linguagens de programação não permitem essa sintaxe, em Python é permitido. Porém, é melhor não usar. Faça várias comparações usando and ou or.
- x > 0 or x < 5
- Apesar de não estar escrito de forma errada, a expressão em si está incorreta. Ela irá resultar em True para todos os números que forem maiores que 0 ou menores que 5. Mas como TODOS os números são maiores que 0 OU menores que 5, o resultado será sempre True!
- x > 0 and x < 5
- Exato, com o operador "and" ambas as expressões devem ser true, dessa forma o número precisa ser maior que 0 e ao mesmo tempo, menor do que 5.