If-else em Python: condições, elif, if aninhado e ternário
Este tutorial foi traduzido do original em inglês.Read in EnglishLeer en españolЧитать на русскомอ่านภาษาไทยAvisar sobre um erro de tradução
Todos os dias você toma centenas de decisões. Se está chovendo, você pega um guarda-chuva. Se o semáforo está vermelho, você para. Se a bateria do celular está abaixo de 20%, você procura um carregador. Todas essas são decisões condicionais: você verifica alguma coisa e age de acordo com o resultado.
Os programas tomam decisões do mesmo jeito. Sem condições, o código rodaria exatamente igual todas as vezes, não importando os dados que recebesse. As condições permitem que seus programas reajam a situações diferentes, tratem casos extremos e se comportem de forma inteligente.
Neste tutorial, você vai aprender como o Python toma decisões usando if, else e elif. No final, você vai escrever programas que escolhem caminhos diferentes com base na entrada do usuário, em valores calculados e em combinações complexas de condições.
Como funciona a instrução if em Python?
A instrução if é a forma mais simples de tomar uma decisão. Ela verifica uma condição. Se a condição for True, o código indentado logo abaixo é executado. Se a condição for False, o Python pula esse código por completo.
It's hot outside! Stay hydrated. Have a great day!
Observe a estrutura. A palavra-chave if é seguida por uma condição (temperature > 30) e depois por dois-pontos (:). As linhas abaixo dela estão indentadas: é assim que o Python sabe qual código pertence ao bloco do if. A última linha roda de qualquer jeito, porque não está indentada dentro do if.
Tente mudar a temperatura para 25 no código acima e execute de novo. As duas linhas sobre o calor vão desaparecer, mas você ainda vai ver "Have a great day!", porque essa linha está fora do bloco do if.
Adicionando else: o que acontece quando a condição é falsa?
Uma instrução if sozinha só consegue fazer algo ou não fazer nada. Mas muitas vezes você quer fazer uma coisa quando a condição é verdadeira e outra coisa quando ela é falsa. É para isso que serve o else.
You're too young to vote. Come back in 3 years.
Pense no if-else como uma bifurcação na estrada. O Python sempre segue por um caminho ou pelo outro: nunca pelos dois, nunca por nenhum. Exatamente um bloco é executado, toda vez.
score = 85
if score >= 60:
print('You passed!')
if score < 60:
print('You failed.')score = 85
if score >= 60:
print('You passed!')
else:
print('You failed.')A versão com else é melhor por dois motivos. Primeiro, ela é mais curta e mais legível. Segundo, é impossível que os dois blocos rodem, ou que nenhum rode, por acidente. Com duas instruções if separadas, um erro de digitação na segunda condição pode causar bugs.
Como o elif funciona com várias condições?
E se você tiver mais de duas opções? Imagine dar a nota de uma prova: A, B, C, D ou F. Não dá para tratar cinco resultados só com if e else. É aí que entra o elif (abreviação de "else if", ou "senão, se").
Score: 82, Grade: B
O Python verifica as condições de cima para baixo. Assim que encontra uma que é True, ele executa aquele bloco e pula tudo o que vem abaixo. Se nenhuma condição for atendida, o bloco do else roda como uma rede de segurança.
Você pode ter quantos blocos elif quiser. O else no final é opcional, mas é uma boa prática incluí-lo para pegar valores inesperados.
If aninhado: condições dentro de condições
Às vezes você precisa verificar uma segunda condição só depois que a primeira passou. Por exemplo, um brinquedo de parque de diversões pode verificar primeiro se você tem ingresso e depois a sua idade. Você pode colocar uma instrução if dentro de outra instrução if: isso se chama aninhamento.
Welcome to the ride!
O if interno só roda quando o if externo é True. Repare como a indentação fica mais profunda: cada nível de aninhamento acrescenta mais uma camada de indentação.
if has_ticket:
if age >= 12:
if height >= 120:
print('Welcome!')if has_ticket and age >= 12 and height >= 120:
print('Welcome!')Operador ternário em Python: if-else em uma linha
Às vezes você tem um if-else simples que só atribui um valor. O Python tem um atalho para isso chamado operador ternário (também chamado de expressão condicional). Ele coloca o if-else inteiro em uma linha.
adult adult
A sintaxe é: value_if_true if condition else value_if_false. Leia quase como uma frase: "status é 'adult' se a idade for pelo menos 18, senão 'minor'".
Wear a t-shirt today. Absolute value of -5 is 5
Erros comuns com if-else
Estes são os bugs mais frequentes de iniciantes com instruções condicionais. Aprenda a reconhecer esses padrões e você vai economizar horas de depuração.
This always runs! Red or blue! Primary color!
Exercícios práticos
Hora de praticar! Estes exercícios vão de instruções if simples até lógicas condicionais mais complexas. Tente resolver cada um antes de olhar as dicas.
Escreva um programa que verifique se um número é par ou ímpar. Uma variável number já vem com o valor 7.
Exiba "even" se o número for par, ou "odd" se for ímpar.
Saída esperada:
oddDica: um número é par se number % 2 == 0 (o resto da divisão por 2 é zero).
Escreva um programa que dê dicas de roupa de acordo com a temperatura. Uma variável temp já vem com o valor 22.
Regras:
"Wear shorts""Wear a t-shirt""Wear a jacket""Wear a coat"Saída esperada:
Wear a t-shirtSem executar o código, preveja o que ele vai exibir. Depois execute para conferir.
Pense com cuidado em quais condições são True e quais são False.
Esta calculadora de notas tem um bug. Toda nota recebe o conceito "D", mesmo quando deveria ser "A", "B" ou "C". Corrija a cadeia de elif para que ela funcione corretamente.
Saída esperada para score = 85:
Grade: BUm cinema cobra $12 de adultos (18 anos ou mais) e $8 de crianças (menos de 18). Use o operador ternário para definir o preço em uma linha e depois exiba o valor.
Uma variável age já vem com o valor 14.
Saída esperada:
Ticket price: $8Escreva um validador de login. Duas variáveis já vêm prontas: username e password.
Regras:
"admin" e password for "secret123", exiba "Welcome, admin!""admin" mas a senha estiver errada, exiba "Wrong password""User not found"Saída esperada para username = "admin", password = "wrong":
Wrong passwordResumo: instruções if-else em Python
Aqui está tudo o que você aprendeu sobre condicionais em Python:
| Conceito | Sintaxe | Para que serve |
|---|---|---|
if | if condition: | Executa código quando a condição é True |
else | else: | Executa código quando o if é False |
elif | elif condition: | Verifica condições adicionais |
| If aninhado | if dentro de if | Decisões em vários níveis |
| Ternário | x if cond else y | If-else em uma linha para valores simples |
Regras importantes para lembrar:
if, elif e else termina com dois-pontos (:)True== para comparar, não = (que é atribuição)O que vem a seguir?
Agora que você sabe tomar decisões, é hora de fazer seus programas repetirem coisas. No próximo tutorial, Laço for em Python, você vai aprender a percorrer listas, intervalos e strings para processar dados sem escrever o mesmo código várias vezes.