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
Procurar trecho com
00:19:56inelower()O
inpergunta se uma sequência existe dentro de outra e devolveTrueouFalse. Comtexto.lower()a comparação ignora maiúscula e minúscula, então"gato" in "Gatos"passa a darTrue. Noif/elseisso vira filtro de resposta sem precisar igualdade exata.texto = "Eu Gosto de Gatos" print("gato" in texto.lower())Saída
True
Liberar login com
00:24:00==eandO
==devolveTruese os valores forem iguais e oandsó devolveTruese os dois lados foremTrue. No login isso exige usuário certo e senha certa ao mesmo tempo. Se um dos dois forFalse, o bloco doelseroda.usuario = "ana" senha = "1234" print(usuario == "ana" and senha == "1234") print(usuario == "ana" and senha == "errada")Saída
True False
00:29:45==,!=valem para texto,>e<só para númeroO
==e o!=funcionam comstringe número, mas são sensíveis a maiúscula, então"test" == "Test"dáFalse. O>,<,>=e<=são só paraintefloat. O erro comum é tentar usar maior ou menor com texto.print("test" == "Test") print("test" == "test") print(10 > 3) print(10 != 3)Saída
False True True True
00:47:07oraprova se um lado forTrueO
ordevolveTruese qualquer lado forTruee só dáFalsecomFalse 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.tem_ingresso = False eh_vip = True print(tem_ingresso or eh_vip)Saída
True
00:57:13notinverte o resultadoO
notinverte:not TrueviraFalseenot FalseviraTrue. Serve para agir quando algo não acontece, como fazer algo se a pessoa não gosta de gatos. Comino cuidado é ler comonot ("gato" in texto), não como operador solto.print(not True) print(not False) texto = "eu gosto de cachorro" print(not "gato" in texto)Saída
False True True
Precedência: parênteses, aritmética,
01:07:38NOT,AND,ORA 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 contaTruevale 1 eFalsevale 0. Código real não deve ficar tão complexo, se embaralhar é hora de quebrar com parênteses ou refatorar.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
- Seleção com `if`, `else` e operadores lógicosPython · trilha, etapa 5
- Variáveis, operadores aritméticos e conversão de tempoPython · trilha, etapa 2
- `elif` e seleção aninhadaPython · trilha, etapa 6