Compre o e-book deste material aqui!
Em Python, os valores lógicos são o True (verdadeiro) e o False (falso). Pertencem a uma subclasse dos números inteiros, com 1 correspondendo a True e 0 a False. Em referência ao matemático George Boole1616endnote: 16George Boole, 1815 - 1864, matemático britânico. Fonte: Wikipédia: George Boole., estes dados são chamados de booleanos.
Normalmente, eles aparecem como resultado de expressões lógicas. Por exemplo:
True
False
Python possui operadores de comparação que retornam valores lógicos, são eles:
< menor que
True
<= menor ou igual que
True
> maior que
False
>= maior ou igual que
True
== igual a
True
!= diferente de
False
(Precedência de operações.) Os operadores de comparação <, <=, >, >=, ==, != tem a mesma ordem de precedência e estão abaixo da precedência dos operadores numéricos básicos.
A equação da circunferência de centro no ponto e raio é
(2.37) |
Um ponto está no disco determinado pela circunferência, quando
(2.38) |
e está fora do disco, noutro caso.
O seguinte código verifica se o ponto dado está no disco determinado pela circunferência de centro e raio .
Números decimais são arredondados para o número float(ponto flutuante) mais próximo na máquina1717endnote: 17Consulte a Subseção 2.4.2 para mais informações.. Com isso, a comparação direta entre pontos flutuantes não é recomendada, em geral. Por exemplo,
False
Inesperadamente, este resultado é esperado na aritmética de ponto flutuante! :)
O que ocorre acima, é que ao menos um dos números (na verdade todos) não tem representação exata como ponto flutuante. Isso faz com que a soma 0.1 + 0.2 não seja exatamente computada igual a 0.3.
O erro de arredondamento é de aproximadamente1818endnote: 18Épsilon de máquina . para cada entrada. Conforme operamos sobre pontos flutuantes este erro pode crescer. Desta forma, o mais apropriado para comparar se dois pontos flutuantes são iguais (dentro do erro de arrendamento de máquina) é verificando se a distância entre eles é menor que uma precisão desejada, por exemplo, . No caso acima, podemos usar o método abs:
True
Python tem os operadores lógicos (ou operadores booleanos):
and e lógico
False
A | B | A and B |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
or ou lógico
True
A | B | A or B |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
not negação lógica
True
A | not A |
---|---|
True | False |
False | True |
(Precedência de operações.) Os operadores booleanos tem a seguinte ordem de precedência:
not
and
or
São executados em ordem de precedência menor que os operadores de comparação.
Sejam os discos determinados pelas circunferências
(2.39) | ||||
(2.40) |
onde e são seus centros e e seus raios, respectivamente.
Assumindo, que a circunferência tem
(2.41) |
e a circunferência tem
(2.42) |
o seguinte código verifica se o ponto pertence a interseção dos discos determinados por e .
(Ou exclusivo.) Presente em algumas linguagens, Python não tem um operador xor (ou exclusivo). A tabela verdade do ou exclusivo é
A | B | A xor B |
---|---|---|
True | True | False |
True | False | True |
False | True | True |
False | False | False |
A operação xor pode ser obtida através de expressões lógicas usando-se apenas os operadores and, or e not. Consulte o Exercício 2.5.9.
Considerando a linguagem Python, complete as lacunas.
True é o valor lógico verdadeiro.
False é o valor lógico falso.
O operador de igualdade é o ==.
1.275 != 1.275 retorna o valor booleano False.
a) True. b) falso. c) ==. d) !=.
Sem implementar, complete as lacunas.
8 * 2 < 3 retorna o valor False.
2 * 8 > 9 retorna o valor True.
4 >= 3**2 retorna o valor False.
16 == 16 // 8 retorna o valor False.
a) False. b) True. c) False. d) False.
Complete as lacunas.
True and True retorna o valor True.
False or True retorna o valor True.
not (5 > 3) retorna o valor False.
a) True. b) True. c) False.
Compute as seguintes expressões:
a) 1 - 6 > -6 b) 3/2 < 4/3 c) 31.415e-1 == 3.1415 d) 2.7128 >= 2 2/3+ e) 3/2 7/8 <= (24 + 14)/16+
Desenvolva um código que verifica se um número inteiro dado é par. Teste-o para diferentes valores de .
Considere um quadrado de lado dado e uma circunferência de raio dado. Desenvolva um código que verifique se a área do quadrado é menor que a da circunferência. Teste o seu código para diferentes valores de e .
Considere o plano cartesiano . Desenvolva um código que verifique se um ponto dado está entre a curvas e o eixo das abscissas1919endnote: 19Eixo .. Verifique seu código para diferentes pontos .
Sejam e valores booleanos. Verifique se as seguintes expressões são verdadeiras (True) ou falsas (False):
A or A == A
A and not(A) == True
A or (A and B) == A
not(A and B) == (not(A) or not(B))
not(A or B) == (not(A) or not(B))
a) True. b) False. c) True. d) True. e) False.
Sejam A e B valores booleanos dados. Escreva uma expressão lógica que emule a operação xor (ou exclusivo) usando apenas os operadores and, or e not. Dica: consulte a Observação 2.5.3.
(A or B) and not(A and B)
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!