
Passo 1 de 8
Exigir duas condições com and
Combine dois requisitos com and e reconheça quando a condição composta é verdadeira.
Trilha de aprendizado · Nível 2 · Tutorial 2
Expressar regras que dependem de várias condições, controlando o agrupamento e reconhecendo quando uma expressão deixa de ser avaliada.
Exigir duas condições com and
Combine dois requisitos com and e reconheça quando a condição composta é verdadeira. 2 min
Aceitar alternativas com or
Combine duas comparações quando basta que pelo menos uma delas seja verdadeira. 2 min
Negar uma condição com not
Use not para expressar a ausência de um estado e prever o resultado de uma negação. 1 min
Controlar o significado com parênteses
Use a precedência e os parênteses para escrever condições que correspondam à regra desejada. 2 min
Reconhecer o curto-circuito
Descubra quais operandos são avaliados e quando Python já pode encerrar uma condição. 2 min
Descobrir o valor retornado por and e or
Preveja o valor exato de uma expressão lógica, distinguindo o operando retornado de sua interpretação booleana. 3 min
Proteger uma divisão com curto-circuito
Use uma verificação à esquerda de and para impedir a divisão por zero e confira quando a condição final é verdadeira. 2 min
Aplicar e revisar as condições combinadas
Construa uma regra de minijogo, confira casos no Python local e revise agrupamento, retorno e curto-circuito. 4 min

Passo 1 de 8
Combine dois requisitos com and e reconheça quando a condição composta é verdadeira.
Em um jogo, uma fase exige nível de pelo menos 5 e pelo menos 10 moedas. Use and para combinar essas exigências: a condição composta só será verdadeira quando as duas comparações forem verdadeiras.
nivel = 6
moedas = 12
print(nivel >= 5 and moedas >= 10) # TrueCada expressão combinada pelo operador é um operando. Aqui, nivel >= 5 é o operando à esquerda de and, e moedas >= 10 é o operando à direita.
Para continuar no jogo, é preciso ter pelo menos 100 pontos e mais de zero vidas. Qual expressão representa essa regra?
Com dois operandos booleanos, and tem estas quatro combinações. Basta que um dos requisitos seja falso para o resultado ser False.

Somente a combinação True com True produz True.
Com pontos = 120 e vidas = 0, a expressão pontos >= 100 and vidas > 0 resulta em True.

Passo 2 de 8
Combine duas comparações quando basta que pelo menos uma delas seja verdadeira.
Em um jogo, o bônus é liberado para quem tem pelo menos 100 pontos ou pelo menos 5 moedas.
Use or entre as comparações: basta uma delas ser verdadeira. Se as duas forem verdadeiras, o bônus também é liberado.
A primeira comparação é verdadeira. Isso basta para a condição com or resultar em True.
pontos = 120
moedas = 2
print(pontos >= 100 or moedas >= 5) # TrueCom pontos = 120 e moedas = 8, a expressão pontos >= 100 or moedas >= 5 resulta em True.
Você já usou and para exigir as duas condições. Com or, basta pelo menos uma.
Na tabela, A e B representam os resultados de duas comparações. Observe as linhas em destaque: quando apenas uma é verdadeira, and resulta em False, mas or resulta em True.

Com or, somente a combinação False e False resulta em False.
Uma fase é liberada para quem tem pelo menos 3 vitórias ou pelo menos 100 pontos. Também vale atender aos dois requisitos.
Complete com and ou or:
vitorias >= 3 ___ pontos >= 100

Passo 3 de 8
Use not para expressar a ausência de um estado e prever o resultado de uma negação.
Em Python, coloque not antes de uma condição para negar seu significado: verdadeiro vira falso, e falso vira verdadeiro. Por exemplo, not pausado expressa “não está pausado”.

not sempre inverte o valor lógico da condição.
A negação produz um resultado; ela não altera o valor guardado na variável.
pausado = False
print(not pausado) # True
pontos = 8
print(not (pontos >= 10)) # True: os pontos não chegam a 10Complete com um operador para que liberado represente “o jogo não está bloqueado”.
bloqueado = False
liberado = ___ bloqueado
print(liberado) # Truenot também aceita valores de outros tipos. Ele usa a interpretação booleana que você já conhece e a inverte. O resultado é sempre True ou False, nunca um número, um texto ou None.
print(not 0) # True
print(not 7) # False
print(not "") # True
print(not None) # TrueQual é o valor de not "False"?

Passo 4 de 8
Use a precedência e os parênteses para escrever condições que correspondam à regra desejada.
Ao misturar operadores em Python, a prioridade, da maior para a menor, é: comparações → not → and → or.
Os parênteses permitem explicitar ou mudar esse agrupamento. Por exemplo, not pontos >= 10 significa not (pontos >= 10).
As duas expressões abaixo têm o mesmo significado: o and tem prioridade sobre o or.
vip or ingresso and aberto
vip or (ingresso and aberto)Ordene da maior para a menor precedência, considerando uma expressão sem parênteses.
vip or (ingresso and aberto): ser VIP basta; a outra alternativa exige ingresso e local aberto.
(vip or ingresso) and aberto: aceita VIP ou ingresso, mas o local precisa estar aberto em ambos os casos.
Com vip = True, ingresso = False e aberto = False, a primeira expressão resulta em True; a segunda, em False.

Os contornos destacam os grupos. Na segunda regra, aberto é obrigatório para as duas alternativas.
Exemplo
not pausado or bloqueado significa (not pausado) or bloqueado: o not nega apenas pausado.
Já not (pausado or bloqueado) nega o grupo inteiro. Essa condição só é verdadeira quando ambos os indicadores são falsos.
Prefira deixar o agrupamento visível quando houver várias regras juntas.
As variáveis vip, ingresso, pausado e bloqueado são booleanas.
Escreva uma expressão para esta regra: é preciso ser VIP ou ter ingresso; além disso, o jogo não pode estar pausado nem bloqueado.
Use and, or, not e parênteses. Explique qual grupo o not nega.
Escreva pelo menos 25 caracteres (0/25).

Passo 5 de 8
Descubra quais operandos são avaliados e quando Python já pode encerrar uma condição.
Em uma expressão com dois operandos, Python avalia primeiro o da esquerda.
and, se o esquerdo for falso em contexto booleano, o direito não é avaliado.or, se o esquerdo for verdadeiro em contexto booleano, o direito não é avaliado.Essa interrupção é chamada de curto-circuito. Nos demais casos, Python precisa avaliar o operando direito.

Cinza significa “não avaliado”, e não “falso”. Nos dois exemplos, basta avaliar a comparação da esquerda.
Em cada expressão, o operando esquerdo já foi avaliado. Associe ao que acontece com o direito.
Toque em um item e depois no par correspondente.
print((8 > 3) or (2 > 5) and (9 == 9)) # TrueComo and tem precedência sobre or, o agrupamento é:
(8 > 3) or ((2 > 5) and (9 == 9))
Isso não manda executar o grupo com and primeiro. Python começa pelo operando esquerdo do or: 8 > 3 resulta em True.
O or então ignora todo o grupo à direita. Nem 2 > 5 nem 9 == 9 são avaliados. A precedência define o agrupamento; o curto-circuito determina até onde a avaliação vai.
Analise sem executar:
(2 > 5) and (9 == 9) or (4 < 7)
Quais comparações são avaliadas, em que ordem e qual é ignorada? Justifique e indique o resultado final.
Escreva pelo menos 30 caracteres (0/30).

Passo 6 de 8
Preveja o valor exato de uma expressão lógica, distinguindo o operando retornado de sua interpretação booleana.
Você já viu quando o curto-circuito interrompe a avaliação. Agora observe o que a expressão devolve: and e or retornam o valor de um dos operandos, sem convertê-lo automaticamente para bool.
Com dois operandos:
O teste booleano orienta a escolha, mas não altera o valor escolhido.

A coluna do meio mostra o teste do operando esquerdo; a última mostra o valor realmente retornado.
Associe cada expressão ao valor exato retornado.
Toque em um item e depois no par correspondente.
Diferentemente de and e or, not sempre retorna um bool. Se você quiser converter explicitamente o resultado de and ou or para bool, use bool(...).
Compare as saídas indicadas nos comentários:
print(5 and 8) # 8
print(bool(5 and 8)) # True
print(not 8) # False
print(not 0) # TrueAtenção
Em 5 and 8, o resultado é o número 8, não True. Ele é verdadeiro em contexto booleano, mas continua sendo um int. Da mesma forma, 0 and 8 retorna o número 0, não False.
Qual é o valor exato retornado por "False" or 0?

Passo 7 de 8
Use uma verificação à esquerda de and para impedir a divisão por zero e confira quando a condição final é verdadeira.
Queremos verificar se uma divisão resulta em um valor maior que 2, mas só podemos dividir quando o denominador for diferente de zero:
denominador != 0 and numerador / denominador > 2
A proteção fica à esquerda de and. Se ela for falsa, a comparação que contém a divisão nem será avaliada.

Passar pela proteção permite avaliar a divisão; não garante que o resultado final seja True.
Atenção
Em numerador / denominador > 2 and denominador != 0, a divisão vem primeiro. Se o denominador for zero, ocorre ZeroDivisionError antes de chegar à verificação.
Preencha com o operador de comparação que significa “diferente de”:
denominador ____ 0 and numerador / denominador > 2
Antes de executar, preveja os três resultados. Depois, copie o código para seu editor ou interpretador Python e execute no seu computador.
Observe: em qual caso a divisão é ignorada? Em qual ela acontece, mas a condição ainda resulta em False?
numerador = 10
denominador = 0
print(denominador != 0 and numerador / denominador > 2)
denominador = 2
print(denominador != 0 and numerador / denominador > 2)
denominador = 5
print(denominador != 0 and numerador / denominador > 2)Quais são os três resultados do código anterior? Indique quando a divisão é ignorada e quando ela é avaliada, mas a condição resulta em False. Por que colocar a divisão à esquerda de and causaria erro no caso zero?
Escreva pelo menos 30 caracteres (0/30).

Passo 8 de 8
Construa uma regra de minijogo, confira casos no Python local e revise agrupamento, retorno e curto-circuito.
O desafio será liberado quando todos estes requisitos forem atendidos:
nivel >= 3 ou possui convite.pausado.tentativas é diferente de zero.pontos / tentativas é maior ou igual a 3.convite e pausado são booleanos. Agrupe as alternativas de habilitação e coloque a proteção antes da divisão.

O convite substitui o requisito de nível, mas não dispensa os demais requisitos.
Antes de executar, preveja o resultado da condição em cada caso. Os valores abaixo serão usados na prática local.
| Caso | nivel | convite | pausado | pontos | tentativas |
|---|---|---|---|---|---|
| A | 3 | False | False | 12 | 3 |
| B | 1 | True | False | 12 | 3 |
| C | 3 | False | True | 12 | 3 |
| D | 1 | False | False | 12 | 3 |
| E | 3 | False | False | 12 | 0 |
| F | 3 | False | False | 3 | 3 |
Escreva a condição completa, registre suas previsões para A–F e explique por que as alternativas precisam ficar entre parênteses.
Escreva pelo menos 40 caracteres (0/40).
No seu editor ou interpretador Python, use o código abaixo para conferir o caso A. Depois, substitua as cinco primeiras atribuições pelos valores de cada caso da tabela e execute novamente.
Anote o resultado de A–F e compare com suas previsões. No caso E, observe se ocorre erro de divisão por zero. Não é necessário enviar arquivos.
nivel = 3
convite = False
pausado = False
pontos = 12
tentativas = 3
liberado = (
(nivel >= 3 or convite)
and not pausado
and tentativas != 0
and pontos / tentativas >= 3
)
print("Desafio liberado:", liberado)Relate os resultados observados em A–F. Em quais casos a divisão não foi avaliada? Por que F retorna False mesmo com denominador diferente de zero?
Para fechar: em "jogar" or None, qual é o valor exato retornado, qual é sua interpretação booleana e qual operando é ignorado?
Escreva pelo menos 40 caracteres (0/40).
Resumo
Ao escrever uma condição composta, confira:
Parabéns! Você concluiu: Combinar condições com and, or e not
Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks