Pular para o conteúdo
Praticar: 12 fichas
1ª unidadeLição 3 de 7~12 min de leitura12 fichas para praticar

Decisões: if, elif e else

O if faz o programa escolher um caminho. Existem quatro formas de montar essa escolha, e escolher a forma certa é metade da questão.

Nesta lição0 de 4 vistas
  1. 1As quatro formas
  2. 2elif ou ifs soltos?
  3. 3A ordem das faixas importa
  4. 4Quando aninhar
1

As quatro formas

if, if/else, if/elif/else e if dentro de if

if sozinho

exemplo.py
saldo = -20
if saldo < 0:
print('ATENCAO')
print('fim')

Faz algo só se a condição for verdadeira; se não for, simplesmente segue. Usado em: um aviso opcional, um contador que só aumenta às vezes.

if / else

exemplo.py
n = 7
if n % 2 == 0:
print('PAR')
else:
print('IMPAR')

Dois caminhos opostos: sempre entra em exatamente um. Usado em: par ou ímpar, concedido ou negado, capicua ou não.

if / elif / else

exemplo.py
n = -3
if n > 0:
print('POSITIVO')
elif n < 0:
print('NEGATIVO')
else:
print('NULO')

Vários caminhos que se excluem: entra no primeiro verdadeiro e pula o resto. Usado em: faixas (salário, IMC, idade), classificações.

if dentro de if

exemplo.py
a, b, c = 3, 3, 3
if a < b + c and b < a + c and c < a + b:
if a == b == c:
print('EQUILATERO')
else:
print('OUTRO')
else:
print('NAO FORMA')

Uma segunda pergunta que só faz sentido se a primeira for verdadeira. Usado em: triângulo, situação do aluno (falta antes da nota).

Como escolher: quantos caminhos existem e eles se excluem? Dois opostos: if/else. Três ou mais que se excluem: if/elif/else. Testes independentes, que podem valer juntos: ifs soltos. Uma pergunta que depende de outra: if dentro de if.

2

elif ou ifs soltos?

Veja a diferença rodando

Num encadeamento com elif, assim que uma condição é verdadeira, as outras nem são testadas. Com ifs soltos, todos são testados sempre, e mais de um pode imprimir. Mude a nota:

Com elifentra só no primeiro verdadeiro
nota = float(input())
if nota >= 7:
print('APROVADO')
elif nota >= 5:
print('RECUPERACAO')
else:
print('REPROVADO')
saída com nota 8APROVADO
Com ifs soltostesta todos
nota = float(input())
if nota >= 7:
print('APROVADO')
if nota >= 5:
print('RECUPERACAO')
else:
print('REPROVADO')
saída com nota 8APROVADO RECUPERACAO

Com nota 8, o primeiro exibe só APROVADO. O segundo exibe APROVADO e também RECUPERACAO, porque o segundo if é testado mesmo depois do primeiro dar verdadeiro.

3

A ordem das faixas importa

A primeira condição verdadeira vence

Com elif, a primeira condição verdadeira vence. Se a faixa mais larga vier antes, as de baixo nunca são alcançadas.

Ordem certado limite mais alto para o mais baixo
nota = float(input())
if nota >= 7:
print('APROVADO')
elif nota >= 5:
print('RECUPERACAO')
else:
print('REPROVADO')
saída com nota 8APROVADO
Ordem trocadao >= 5 engole o >= 7
nota = float(input())
if nota >= 5:
print('RECUPERACAO')
elif nota >= 7:
print('APROVADO')
else:
print('REPROVADO')
saída com nota 8RECUPERACAO

A regra: em faixas crescentes, teste do limite mais alto para o mais baixo (ou do mais baixo para o mais alto, testando só o limite de cima de cada faixa, como no salário). Nunca uma condição que engole as de baixo.

4

Quando aninhar

A segunda pergunta faz sentido se a primeira for falsa?

Se não faz, ela mora dentro da primeira. No triângulo, só dá para perguntar o tipo de algo que é triângulo. Na situação do aluno, só vale olhar a média de quem não reprovou por falta.

exemplo.py
freq = 80
media = 6.5
if freq < 75:
print('REPROVADO POR FALTA')
else:
if media >= 7:
print('APROVADO')
else:
print('REPROVADO')

Cada nível de aninhamento recua mais 4 espaços, e é a indentação que diz a qual if cada else pertence.

Erros que mais aparecem na prova

6 erros
Faltou os dois-pontos

if n > 0 sem : no fim. Vale para if, elif, else, while e for.

else com condição

else n < 0: não existe. O else pega tudo que sobrou; condição nova é elif.

elif desalinhado

if, elif e else ficam na mesma coluna. Um espaço a mais e o Python não acha o if do elif.

Conta dentro de cada ramo

Se a mesma conta aparece em todos os ramos, ela vai antes ou depois do if. Dentro, guarde só o que muda (como o percentual).

ifs soltos em faixas

Faixas se excluem: com ifs soltos, um valor pode cair em duas e o programa imprime duas respostas. Use elif.

Caso geral antes do específico

No triângulo, testar isósceles antes de equilátero faz o equilátero nunca aparecer. O caso mais específico vem primeiro.

Próxima lição: Por que % e // funcionam ›

Complemento, não atalho. O laboratório ajuda a entender a lógica. Para fixar de verdade, escreva do zero no Thonny ou no seu editor.