Como tomar decisões no código com if, elif e else
Chegou a hora de dar um passo importante: fazer nosso código tomar decisões.
É aqui que entram as estruturas condicionais, construídas em cima dos valores booleanos (True e False) e dos operadores que você já viu. Em Python, elas giram principalmente em torno de três palavras-chave:
ifelifelseifO if equivale à palavra SE que usamos em português para falar sobre uma condição, como quando falamos: "Se fizer sol, eu vou à praia".
Ele é a estrutura condicional mais simples. Sua função é testar uma condição e executar um bloco de código apenas se essa condição for verdadeira:
1clima = "Ensolarado" 2 3if clima == "Ensolarado": 4 print("Vou à praia") # este código é executado 5 6# Saída: 7# Vou à praia
Nesse caso, a expressão clima == "Ensolarado" vai ter True ou False como resultado. Se o resultado for True, o bloco logo abaixo do if é executado.
Se for False, o Python ignora o bloco e continua executando as linhas do programa fora dele se houver:
1clima = "Chuvoso" 2 3if clima == "Ensolarado": 4 print("Vou à praia") # este código NÃO é executado 5
ifEm muitas linguagens, blocos de código são delimitados com chaves ({}). Em Python, quem manda é a indentação, lembra dela? Como vimos na lição "Sintaxe Básica", a indentação são os espaços ou tabulações no começo de uma linha de código.
Logo abaixo do if, tudo que estiver mais à direita está indentado e faz parte do bloco condicional. Se você tirar a indentação, o Python entende que a linha não faz parte do if:
1condicao = True 2 3if condicao == True: 4 print("Esta linha está DENTRO do if.") # com indentação 5
No exemplo aqui em cima, o último print() realmente deveria estar fora do if, mas se você esquecer de indentar uma linha que queria indentar, você pode ter dois tipos de problemas:
if, você vai receber um erro do tipo IndentationError;Dica: no terminal, o próprio Python já coloca a indentação para você quando você começa um bloco
if. Mas quando você usar outros programas feitos para escrever código, fique de olho. Ah, e depois de escolher se vai usar espaços ou tab, mantenha sempre o mesmo padrão dentro do bloco. Nada de misturar os dois!
If e else: o que fazer quando o caso False também é importanteQuando o resultado falso também exigir que a gente faça algo a partir dele, usamos a dupla if + else.
Se a condição do if não for verdadeira, o código vai obrigatoriamente entrar no else. Ele equivale à palavra SENÃO que usamos em português para falar sobre uma condição, como quando dizemos: "Se fizer sol, eu vou à praia. Senão, vou ao shopping".
É importante entender que o if cobre o caso verdadeiro. Já o else fica responsável por todos os outros casos exceto o que aparece no if. Pensando na frase acima, Ou seja, ele cobre todo o resto: qualquer situação que não seja sol, como estar chovendo, nublado ou até nevando, leva a pessoa ao shopping.
Veja um exemplo real:
1idade = 15 2 3if idade >= 18: 4 print("Maior de idade") 5else:
if, elif e else: escolhendo entre vários caminhosO if e o else são excelentes para testarmos uma condição, dizendo o que fazer se ela for verdadeira e o que fazer se ela for falsa. Mas às vezes você precisa escolher entre mais de duas opções.
É aí que entra em cena o elif, que é uma abreviação de "else if". Em português, ele equivale à expressão "SENÃO, SE": "SE fizer sol, eu vou à praia. SENÃO, SE estiver chovendo, vou ficar em casa. SENÃO, vou no shopping".
Juntos, eles funcionam da seguinte maneira no código:
if: testa a primeira condição;elif: testa outras condições, caso as anteriores sejam falsas;else: testa o último caso, quando nenhuma condição anterior é verdadeira.Observe:
1nota = 75 2 3if nota >= 90: # testa a 1ª condição 4 print("Nota A") 5elif
Um ponto importante é que apenas o primeiro bloco com condição verdadeira é executado. Se o aluno do exemplo acima tivesse tirado 95, as duas primeiras condições seriam verdadeiras, mas o código só entraria na condição if nota >= 90 e somente "Nota A" seria impresso. Todo o resto seria ignorado.
1nota = 95 2 3if nota >= 90: # a 1ª condição é verdadeira 4 print("Nota A") 5
Veja outro possível uso. O código abaixo testa três condições diferentes e apenas a última é verdadeira, então ele entra no bloco dela e imprime a mensagem correspondente:
1dia_da_semana = "sábado" 2 3if dia_da_semana == "segunda": 4 print("Boa semana para você!") 5elif dia_da_semana
Perceba que não há um else. Com isso, nada é impresso caso o dia da semana não seja segunda, quarta, sábado ou domingo.
Se acrescentarmos o else, ele dirá o que deve ser feito quando o dia da semana for terça, quinta ou sexta:
1dia_da_semana = "quinta" 2 3if dia_da_semana == "segunda": 4 print("Boa semana para você!") 5elif dia_da_semana
Tudo que não é coberto pelas condições do
ifeelif, entra no bloco doelse. Ou seja, no código acima,elseequivaleria a verificarelif dia_da_semana == "terça" or dia_da_semana == "quinta" or dia_da_semana == "sexta", que são todos os casos não abordados pelas condições anteriores nesse exemplo.
if, elif e elseAgora que você já viu como eles funcionam, é importante entender e reforçar suas regras.
Onde cada palavra-chave pode aparecer:
if sempre inicia a estrutura.elif só pode aparecer depois de um if.else deve aparecer por último, depois do if e todos os elif.Quantas vezes cada uma pode ser usada:
if só pode ser usado uma vez.elif pode ser usado quantas vezes você quiser, mas o uso dele é opcionalelse pode ser usado uma vez, no máximo. O uso dele é opcional.O que causa erro:
elif sem uma condição, como elif:.else, como else nota >= 60.else.Como o fluxo é avaliado:
Quando são opcionais:
if nunca é opcional.elif é opcional. Só precisamos dele se quisermos testar condições específicas que não seriam atendidas pelo if.else só é necessário se algo precisa ser feito caso todas as outras condições sejam falsas. Se nada precisar ser feito para elas, não use o else.Não se preocupe se parecer que são muitas informações. Vamos continuar vendo estruturas condicionais na próxima lição. Quanto mais você estudar esse assunto, mais fácil ele vai ficar!