Curso

Ao escrever código em qualquer linguagem, você vai precisar controlar o fluxo do seu programa. Isso geralmente acontece quando tem que tomar uma decisão - você vai querer executar uma linha de códigos se uma condição for satisfeita e um conjunto diferente de códigos se não for. Em Python, você tem as instruçõesif, elif e else pra isso. Neste tutorial, você vai trabalhar com um exemplo pra aprender sobre a instrução if simples e, aos poucos, passar pra instruções if-else e, depois, pra instruções if-elif-else. Você também vai aprender sobre aninhamento e ver um exemplo de if aninhado. Vamos começar...
Instrução if simples
Esse é o exemplo mais simples de uma instrução condicional. A sintaxe é:
if(condition):
indented Statement Block
O bloco de linhas recuadas na mesma medida após os dois pontos (:) vai ser executado sempre que a condição for TRUE.

Por exemplo, digamos que você está gravando a pontuação de um determinado curso. A nota total é 100, sendo 50 pontos para o trabalho teórico e 50 para o prático. Você quer mostrar uma mensagem de erro ou aviso se a pontuação passar de 100.
score_theory = 40
score_practical = 45
if(score_theory + score_practical > 100):
print("Invalid score. Please check the input.")
# no output expected
O ponto-e-vírgula (:) é importante porque separa a condição das instruções que serão executadas depois que a condição for avaliada. Isso é super importante pra declarações onde tem só uma declaração e o parêntese ( ) não é usado. Por exemplo:
score_theory = 40
score_practical = 45
if score_theory + score_practical > 100: # End of condition
print("Invalid score. Please check the input.")
# no output expected
A instrução if acima verifica a condição “if” e determina que a instrução (40 + 45 = 85) > 100 é FALSA e, portanto, não vai mostrar o aviso. Vamos deixar a afirmação como VERDADEIRA e ver o que rola:
score_theory = 50
score_practical = 55
if(score_theory + score_practical > 100):
print("Invalid score. Please check the input.")
# Invalid score. Please check the input.
Digamos que você queira ir um pouco mais longe e mostrar uma mensagem quando a pontuação total estiver dentro do intervalo, ou seja, menor que 100. É aí que a instrução if-else pode ajudar.
Teste único: instrução if-else
A instrução if-else é usada pra codificar da mesma forma que você usaria na língua inglesa. A sintaxe da instrução if-else é:
if(condition):
Indented statement block for when condition is TRUE
else:
Indented statement block for when condition is FALSE

Vamos tentar trabalhar no código acima e redefinir o problema: Quando você estiver registrando a nota de um trabalho, vai querer somar os pontos da parte teórica e da parte prática pra chegar na nota final. Se a pontuação total for menor ou igual a 100, você quer mostrar uma mensagem “Pontuação ok”, e se não for, então um aviso como antes.
score_theory = 40
score_practical = 45
if(score_theory + score_practical > 100):
print("Please check the input. Score exceeds total possible score.")
else:
print("Score validated. Your total is: ", score_theory + score_practical)
# Score validated. Your total is: 85
Dica: Se você só tem uma linha de código pra ser executada, em vez de várias linhas no código depois da condição, pode colocar tudo na mesma linha. Isso não é uma regra, mas só uma prática comum entre os programadores. Reescrevendo o código acima nesse estilo:
score_theory = 40
score_practical = 45
# Single statement: if(condition): Statement for when condition is true
if (score_theory + score_practical > 100): print("Please check the input. Score exceeds total possible score.")
# Single statement: if(condition): Statement for when condition is false
else: print("Score validated. Your total is: ", score_theory + score_practical)
# Score validated. Your total is: 85
Agora, imagina um caso em que uma das pontuações passa de 50, mas o total ainda é menor ou igual a 100. O que você acha que aconteceria então?
score_theory = 60
score_practical = 40
if(score_theory + score_practical > 100):
print("Please check the input. Score exceeds total possible score.")
else:
print("Score validated. Your total is: ", score_theory + score_practical)
# Score validated. Your total is: 100
Isso tá errado, porque você sabe que o máximo que dá pra tirar na teoria ou na prática é 50. Como você pode colocar isso em código? A resposta: instrução if-elif-else.
Vários testes: Instrução if-elif-else em Python
Vamos analisar o problema que temos até agora e tentar colocá-lo em palavras antes de começarmos a programar.
-
Passo 1. Digite as duas pontuações:
score_theoryescore_practical -
Passo 2. Dá uma olhada se nenhuma das notas passa do máximo possível, que é 50. Isso também resolve o problema da pontuação total não passar de 100. Se algum dos dois for maior que 50, mostra o aviso e sai.
- 2.1 Verifique se
score_theory - 2.2 Verifique se
score_practical
- 2.1 Verifique se
-
Passo 3. Se nenhum dos dois passar da nota, mostra um “Nota ok” e sai.
# Step 1
score_theory = 60
score_practical = 20
if(score_theory > 50):
print("Please check the input score for 'Theory'.") # Step 2.1
elif(score_practical > 50):
print("Please check the input score for 'Practical'.") # Step 2.2
else:
print("Score validated. Your total is: ", score_theory + score_practical) # Step 3
# Please check the input score for 'Theory'.
A sintaxe seguida pela instrução if-else-if é:
if(Condition1):
Indented statement block for Condition1
elif(Condition2):
Indented statement block for Condition2
else:
Alternate statement block if all condition checks above fails

Na verdade, uma maneira mais elaborada de ver o efeito da instrução if-elif-else do Python como apenas uma instrução if-else é escrevê-la assim:
score_theory = 60
score_practical = 20
if(score_theory > 50):
print("Please check the input score for 'Theory'.")
else:
if(score_practical > 50):
print("Please check the input score for 'Practical'.")
else:
print("Score validated. Your total is: ", score_theory + score_practical)
# Please check the input score for 'Theory'.
A instrução elif facilita a escrita do código. Imagina se a descrição do problema se tornasse mais complexa, então acompanhar todas as instruções if-else dentro de outra instrução if poderia facilmente se tornar um pesadelo!
Vamos continuar com o mesmo exemplo. Agora, imagina que você quer acompanhar vários trabalhos, tipo: “Ciência” e “Inglês”. A pontuação total para ambos continua a mesma, ou seja, 100. Mas, pra Ciência, a divisão entre teoria e prática é 50-50, mas pra Inglês, é 60-40. Você ainda pode usar os formatos acima?
SIM! E você pode fazer isso facilmente com o conceito de instruções if aninhadas.
Instruções if aninhadas em Python
Quando você tem uma instrução if dentro de outra instrução if, isso é chamado de aninhamento no mundo da programação. Não precisa ser sempre uma instrução if simples, mas você pode usar o conceito de instruções if, if-else e até mesmo if-elif-else combinadas para formar uma estrutura mais complexa.
Vamos codificar o exemplo que falamos acima:
coursework = "English"
score_theory = 53
score_practical = 35
if(coursework == "Science" or coursework == "science"):
if(score_theory > 50):
print("Please check the input score for 'Science: Theory'.")
elif(score_practical > 50):
print("Please check the input score for 'Science: Practical'.")
else:
print("Score validated for Science. Your total is: ", score_theory + score_practical)
elif(coursework == "English" or coursework == "english"):
if(score_theory > 60):
print("Please check the input score for 'English: Theory'.")
elif(score_practical > 40):
print("Please check the input score for 'English: Practical'.")
else:
print("Score validated for English. Your total is: ", score_theory + score_practical)
else: print("Coursework not recognised. Please enter score for either Science or English.")
# Score validated for English. Your total is: 88
Reparou no uso de “ or ” no código acima? É usado pra avaliar “Ciência” e “ciência” como a mesma disciplina, e o mesmo vale pra “Português” e “português”. Você pode usar expressões booleanas como or, and para juntar várias condições. Mas é preciso ter cuidado para entender a saída booleana dessas instruções combinadas para compreender totalmente o fluxo de controle do seu programa.
A gente pode reescrever o código acima pra conferir as pontuações na mesma instrução, mas isso deixa o código meio confuso e, às vezes, difícil de depurar.
coursework = "English"
score_theory = 53
score_practical = 78
if(coursework == "Science" or coursework == "science"):
if(score_theory > 50 or score_practical > 50):
# Can't distinguish the error in Science: theory or Science: Practical
print("Please check the input score for Science.")
else: print("Score validated for Science. Your total is: ", score_theory + score_practical)
elif(coursework == "English" or coursework == "english"):
if(score_theory > 60 or score_practical > 40):
# Can't distinguish the error in English: theory or English: Practical
print("Please check the input score for English.")
else: print("Score validated for English. Your total is: ", score_theory + score_practical)
else: print("Coursework not recognised. Please enter score for either Science or English.")
# Please check the input score for English.
Pronto!
Neste tutorial, você aprendeu um dos principais mecanismos de fluxo de controle disponíveis no Python. Você trabalhou com um exemplo em vários níveis para ver as variações da humilde instrução if em ação. Para saber mais sobre Python, dá uma olhada no curso Introdução ao Python para Ciência de Dados do DataCamp.
Perguntas frequentes sobre IF, ELIF e ELSE em Python
O que é a instrução if em Python?
A instrução “ if ” é usada pra executar um bloco de código se uma certa condição for verdadeira.
Como eu uso a instrução elif em Python?
A instrução “else if” (abreviação de “ elif ”) é usada para especificar condições adicionais a serem testadas após a instrução if inicial. Se a condição da instrução “ if ” for falsa e a condição da instrução “ elif ” for verdadeira, o bloco de código associado à instrução “elif” será executado.
Posso ter várias instruções elif em um único bloco if?
Sim, você pode ter várias instruções “ elif ” em um único bloco “ if ”.
O que é a instrução else em Python?
A instrução “ else ” é usada pra especificar um bloco de código que deve ser executado se nenhuma das condições nas instruções “ if ” e “ elif ” anteriores forem verdadeiras.
Posso usar a instrução else sem nenhuma instrução if ou elif?
Não, a instrução “ else ” precisa ser usada junto com uma instrução “ if ”. Não dá pra usar sozinho.