Mandar um café pro programador

Pode me ajudar a transformar cafeína em código?

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

10 comentários:

  1. print('''[ 1 ] - IDOSO
    [ 2 ] - CADEIRANTE
    [ 3 ] - GESTANTE
    [ 4 ] - DEFICIÊNTE
    [ 5 ] - NENHUMA DAS ALTERNATIVAS
    ''')
    resposta = int(input('Qual sua condição [ex: 1]: '))

    if resposta == 1 or resposta == 2 or resposta == 3 or resposta == 4:
    print('Você tem preferência, Pode passar a frente!')
    elif resposta == 5:
    print('Você não tem preferência, aguarde!')
    else:
    print('Opção Invalida!')

    ResponderExcluir
    Respostas
    1. O certo vai ficar assim:



      print('1. Idoso')
      print('2. Cadeirante')
      print('3. Gestante')
      print('4. Deficiente')
      print('5. NDA')

      resposta = int(input('Qual sua condição? Digite apenas números: '))

      if (resposta==1) or (resposta==2) or (resposta==3) or (resposta==4):
      print('Você tem preferência, Pode passar a frente!')

      elif (resposta==5):
      print('Você não tem preferência, aguarde!')

      else:
      print('Opção Invalida!')

      Excluir
  2. Obrigado pelo tutorial, mas faltou uma explicação sobre o pq do operador lógico OR ter que usar parênteses.

    ResponderExcluir
    Respostas
    1. Não precisa usar.

      Excluir
    2. Boa noite! Eu não usei os parênteses e o código rodou normal.

      Excluir
  3. print ('Opções de atendimento:\n\n')
    print ('Opção 1 - Idoso.\nOpção 2 - Gestante.\nOpção 3 - Cadeirante.\nOpção 4 - Nenhum destes.')

    opcao = int (input ('\n\nSelecione uma das opção: '))

    if opcao == 1 or opcao == 2 or opcao == 3:
    print ('\n\nVocê pode usar o atendimento prioritário.')
    elif opcao == 4:
    print ('\n\nVocê deve usar o atendimento comum.')
    else:
    print ('\n\nOpção inválida! Digite uma opção entre 1 e 4.')
    input ()

    ResponderExcluir
    Respostas
    1. import sys

      print ('Opções de atendimento:\n\n')
      print ('Opção 1 - Idoso.\nOpção 2 - Gestante.\nOpção 3 - Cadeirante.\nOpção 4 - Nenhum destes.')

      opcao = int (input ('\n\nSelecione uma das opção: '))

      if opcao == 1 or opcao == 2 or opcao == 3:
      print ('\n\nVocê pode usar o atendimento prioritário.')
      sys.exit(0)
      elif opcao == 4:
      print ('\n\nVocê deve usar o atendimento comum.')
      else:
      print ('\n\nOpção inválida! Digite uma opção entre 1 e 4.')
      opcao = int(input('\n\nSelecione uma das opçoes'))
      if opcao == 1 or opcao == 2 or opcao == 3:
      print ('\n\nVocê pode usar o atendimento prioritário.')
      elif opcao == 4:
      print ('\n\nVocê deve usar o atendimento comum.')
      else:
      print ('\n\nOpção inválida! Digite uma opção entre 1 e 4.')
      opcao = int(input('\n\nSelecione uma das opçoes'))

      Excluir
  4. import sys

    print ('Opções de atendimento:\n\n')
    print ('Opção 1 - Idoso.\nOpção 2 - Gestante.\nOpção 3 - Cadeirante.\nOpção 4 - Nenhum destes.')

    opcao = int (input ('\n\nSelecione uma das opção: '))

    if opcao == 1 or opcao == 2 or opcao == 3:
    print ('\n\nVocê pode usar o atendimento prioritário.')
    sys.exit(0)
    elif opcao == 4:
    print ('\n\nVocê deve usar o atendimento comum.')
    else:
    print ('\n\nOpção inválida! Digite uma opção entre 1 e 4.')
    opcao = int(input('\n\nSelecione uma das opçoes'))
    if opcao == 1 or opcao == 2 or opcao == 3:
    print ('\n\nVocê pode usar o atendimento prioritário.')
    elif opcao == 4:
    print ('\n\nVocê deve usar o atendimento comum.')
    else:
    print ('\n\nOpção inválida! Digite uma opção entre 1 e 4.')
    opcao = int(input('\n\nSelecione uma das opçoes'))

    ResponderExcluir
  5. Parece que ficou certo. Mas usaria a solução do professor com as opções em prints separados na proxima.
    usuario = int(input("Informe o número de sua condição:\n1 - Gestante\n2 - Idoso\n3 - Cadeirante\n4 - Nenhuma das Opções\nOpção: "))
    if usuario==1 or usuario==2 or usuario==3:
    print("Ok, pode se dirigir a fila de prioridade")
    else:
    print("Aguarde ser atendido na fila normal")

    ResponderExcluir

Bora fazer evoluir o ensino da Programação no Brasil ?

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo