Aulas do bloco

← Aulas

PythonAula 918/08/20261h32

Operadores lógicos, comparação e precedência

Retoma if/else com input() e comparação com == para decidir o fluxo. Destrava os operadores lógicos and, or e not, o teste de trecho com in e lower() e a ordem de resolução com parênteses e precedência. O TP2 vence no dia 30 de agosto.

O que foi falado

  1. Procurar trecho com in e lower()

    00:19:56

    O in pergunta se uma sequência existe dentro de outra e devolve True ou False. Com texto.lower() a comparação ignora maiúscula e minúscula, então "gato" in "Gatos" passa a dar True. No if/else isso vira filtro de resposta sem precisar igualdade exata.

    Python
    texto = "Eu Gosto de Gatos"
    print("gato" in texto.lower())

    Saída

    True
  2. Liberar login com == e and

    00:24:00

    O == devolve True se os valores forem iguais e o and só devolve True se os dois lados forem True. No login isso exige usuário certo e senha certa ao mesmo tempo. Se um dos dois for False, o bloco do else roda.

    Python
    usuario = "ana"
    senha = "1234"
    print(usuario == "ana" and senha == "1234")
    print(usuario == "ana" and senha == "errada")

    Saída

    True
    False
  3. ==, != valem para texto, > e < só para número

    00:29:45

    O == e o != funcionam com string e número, mas são sensíveis a maiúscula, então "test" == "Test" dá False. O >, <, >= e <= são só para int e float. O erro comum é tentar usar maior ou menor com texto.

    Python
    print("test" == "Test")
    print("test" == "test")
    print(10 > 3)
    print(10 != 3)

    Saída

    False
    True
    True
    True
  4. or aprova se um lado for True

    00:47:07

    O or devolve True se qualquer lado for True e só dá False com False or False. Serve para regra de negócio com caminhos alternativos, como liberar por um critério ou outro. Dá para encadear várias comparações na mesma expressão.

    Python
    tem_ingresso = False
    eh_vip = True
    print(tem_ingresso or eh_vip)

    Saída

    True
  5. not inverte o resultado

    00:57:13

    O not inverte: not True vira False e not False vira True. Serve para agir quando algo não acontece, como fazer algo se a pessoa não gosta de gatos. Com in o cuidado é ler como not ("gato" in texto), não como operador solto.

    Python
    print(not True)
    print(not False)
    texto = "eu gosto de cachorro"
    print(not "gato" in texto)

    Saída

    False
    True
    True
  6. Precedência: parênteses, aritmética, NOT, AND, OR

    01:07:38

    A ordem é resolver parênteses mais internos primeiro, depois aritmética, depois comparação e por fim NOT, AND, OR. Entre iguais, resolve da esquerda para a direita, e em conta True vale 1 e False vale 0. Código real não deve ficar tão complexo, se embaralhar é hora de quebrar com parênteses ou refatorar.

    Python
    print(True and True or False)
    print(2 + 2 == 4 and not False)
    print(True and (True or False))

    Saída

    True
    True
    True

Perguntas que valem a pena

O and devolve True ou False?00:41:34

Sim, ele junta expressões lógicas numa expressão maior e devolve True ou False.

O in só funciona em string?00:44:02

Não, ele também busca em lista, tupla e outras estruturas que serão vistas mais à frente.

Quando vale usar not?01:00:23

Para agir quando algo não é, como fazer algo se a pessoa não gosta de gatos.

Por que True + True or 0 resulta em True?01:24:23

Porque True vale 1, 2 é truthy e 0 é falsy, então vira True or False, que dá True.

Qual é a ordem correta entre NOT, AND e OR?01:28:32

A ordem certa é NOT, depois AND, por último OR.

Conceitos da aula

  • if/else
  • operadores de comparação
  • and
  • or
  • not
  • in
  • lower()
  • truthy/falsy
  • precedência NOT, AND, OR
  • input()
  • print()

Reforce este assunto

10 exercíciosComeçar →