Operadores Lógicos - AND, OR e NOT

Até o momento, em nossos testes condicionais, fizemos apenas um teste em cada instrução IF.

Porém, é possível fazermos vários testes, em uma mesma instrução IF, tudo de uma vez. Mas para isso precisamos usar os operadores lógicos: and, or e o not.

São bem simples e fáceis de entender.
Vamos estudar eles agora!

Operador AND em Python

Se eu disser pra você que: para ser um bom programador Python você deve estudar bastante teoria e fazer exercícios. O que você faria para ser um bom programador Python?

Estudaria muita teoria ou faria muita exercícios? Ou os dois?
O segredo está no "... e ..."

Ou seja, você precisa fazer OS DOIS, se fizer apenas estudar teoria ou só resolver exercícios, não vai ser um bom programador. Tem que fazer OS DOIS!

O e é o operador and, em Python.
Seja o seguinte teste:

teste condição1 and  condição2

O teste vai retornar TRUE somente se as DUAS condições forem TRUE!
Se uma delas for falsa, já era, o retorno é falso.
Pode colocar 1 milhão de condições, se usar and:

teste condição1 and condição2 and condição3 and condição4....and condição1000000

Só vai retornar verdadeiro se TODAS as condições forem verdadeiras!
Se uma delas for falsa, fodeu a porra toda...o resultado é falso.

Exemplo de uso do operador and

Para votar, você deve ter entre 18 anos e menos de 65 anos.
Escreva um programa que pergunte sua idade e diga se você é obrigado a votar ou não.

Temos dois testes:
  1. Testar se tem 18 anos ou mais
  2. Testar se tem 65 ou menos

Para votar, cada um dos testes deve ser TRUE.
O nosso código fica:

resposta=int( input('Qual sua idade: ') )

if resposta>=18 and resposta <=65:
    print('Você é obrigado a votar!')
else:
    print('Você não é obrigado a votar')


Rode o código e faça um teste.
Veja que para o IF ter resultado verdadeiro, ambas as condições devem ser verdadeiras: tanto deve ter 18 anos ou mais E DEVE ter 65 anos ou menos.

Essa é a característica do operador and.
Todos os testes devem ser true, para o resultado ser true.
Se um deles for false, o resultado é falso.

Operador OR em Python

Para ter acesso a fila de prioridade, você deve ser idoso, gestante ou cadeirante. Escreva um programa que pergunta a situação do usuário (se é idoso, se é gestante, se é cadeirante ou nenhum destes) e diga se ele pode ter acesso a fila prioridade ou não.

Para o usuário ter acesso a fila de prioridade, ele deve ser idoso OU gestante OU cadeirante. Qualquer um desses. Basta que uma dessas condições seja verdadeira, para o teste condicional ser verdadeiro.

Para fazermos isso, devemos usar o operador or (ou em português), cujo modelos é o seguinte:

if condição1 or condição2 or condição3 or ... :
   [código]   # Caso qualquer condição seja verdadeira
   [código]   # Esse código vai ser executado
else:

   [código]   # Caso todas as condições sejam falsas
   [código]   # esse código vai ser executado

A solução do programa do idoso, gestante ou cadeirante, é:

print('1. Idoso')
print('2. Gestante')
print('3. Cadeirante')
print('4. Nenhum destes')
resposta=int( input('Você é: ') )

if (resposta==1) or (resposta==2) or (resposta==3) :
    print('Você tem direito a fila prioritária')
else:
    print('Você não tem direito a nada. Vá pra fila e fique quieto')


Note que fizemos três testes:
  • Se é idoso (resposta==1)
  • Se é gestante  (resposta==2)
  • Se é cadeirante (resposta==3)

Se qualquer um deles for verdade, esse if vai ser verdade, pois usamos o operador lógico or (OU). Pra ser prioridade, OU você tem que ser idoso, OU tem que ser gestante OU tem que ser cadeirante.

Não precisa ser os três, basta um deles ser verdade, que o teste retorna verdade. Faz sentido pra você?

Operador NOT em Python

O operador not em Python é o mais simples.
Ele ele pega a expressão e reverte ela.

Se era uma condição TRUE, ela vira FALSE.
Se algo era FALSE, ela vira TRUE.
Basta colocar not antes.

Por exemplo, vamos criar um script que pergunta qual a melhor banda do universo, para o usuário.

Se ele não digitar 'rush', chama o usuário de herege.
Se digitar, ok, parabeniza. Veja:

banda = input('Qual melhor banda do mundo? ')

if not banda=='rush':
    print('Herege!')
else:
    print('Correto, é o Rush!')

Tabela Verdade: Operador AND

Condição A    Condição B    AND (A.B)
True                 True              True
True                 False             False
False                True              False
False                False             False


Tabela Verdade: Operador OR

Condição A    Condição B    OR (A + B)
True                 True              True
True                 False             True
False                True              True
False                False             False

Tabela Verdade: Operador NOT

Condição A    NOT ( ~A)
True                 False
False                True

Nenhum comentário:

Postar um comentário