Enviar um café pro programador

IF e ELSE - Instrução de Teste em Python

No artigo anterior, estudamos o teste condicional IF em Python e vimos o quanto ele é útil e interessante, pois o programa pode tomar diversos rumos diferentes, de acordo com as informações que o usuário vai fornecer.

Agora vamos estudar outra instrução, a ELSE, que é usada com a IF e deixa nossos testes cada vez mais poderosos.


IF e ELSE em Python

Relembrando o último tutorial de nosso Curso de Python, a estrutura de um teste condicional IF tem a seguinte forma:

if [condition]:
    [codigo]    # Se a condição for verdadeira
    [codigo]    # o codigo indentado abaixo do if
    [codigo]    # será executado

Ou seja, se a condição [condition] for verdadeira, o código abaixo do IF, que está indentado, será executado.
Se a condição for falsa, todo esse bloco do IF é pulado e nada dessas linhas é executado.

Em outras palavras, se a condição for TRUE, o código é executado.
E é aí que entra a instrução ELSE, ela vai ficar sempre abaixo do seu IF, alinhada, e abaixo do ELSE (e indentado) teremos um outro código, que só será executado se a condição testada for FALSE.

Veja a estrutura de uma teste condicional IF ELSE:

if True:
    [codigo]    # Se a condição for verdadeira
    [codigo]    # o codigo indentado abaixo do if
    [codigo]    # será executado
else:
    [codigo]    # Este bloco de código só funciona
    [codigo]    # se a condição for falsa

Vamos ver dois exemplos.
Abra seu IDLE e teste os códigos, veja os resultados você mesmo.


Exemplo de IF e ELSE:

Em programação, o número 1 é sinônimo de verdadeiro e o 0 é sinônimo de falso. Ou seja, 1 é True e 0 é False.
if 1:
    print("Oi, estou dentro do if")
else:
    print("Eu nunca vou ser printado :( ")


O código acima vai sempre executar o IF, pois o número 1 retorna TRUE.
Lembre-se: ali depois IF é um teste, é uma condição, e testes sempre retornam verdadeiro ou falso.

Agora uma condição que retorna sempre falso:

if 0:
    print('Somente programadores podem ler isso')
else:
    print('Oi mãe, to no ELSE')


Veja que o ELSE é que é executado desta vez.


Exemplo de IF e ELSE:

Escreva um código que exiba o nome de dois times, em seguida pergunta ao usuário qual deles é o melhor.

Com a resposta em mãos, usando IF e ELSE, imprima na tela uma mensagem dizendo qual time ele torce.

Veja nosso código:

print('1. Corinthians')
print('2. Flamengo')      
resposta = int (input('Qual melhor time: ') )

if resposta == 1: 
    print('Você deve ser corinthiano')
else:             
    print('Você deve torcer Flamengo')


Perguntamos o time do usuário, e armazenamos na variável 'resposta'.
Em seguida, vamos fazer um teste com essa variável, na instrução IF.

Fizemos 'resposta == 1'.
Se o resultado desse teste for verdadeiro, cai no IF e falamos do Corinthians.
Se for falso, cai no ELSE e falamos do Flamengo.

Hackeando em Python

Uma das coisas que iremos te ensinar no decorrer de nosso curso, é hackear.
Ou seja, achar brechas, problemas e falhas em códigos.

Vamos te apresentar duas, agora.
A primeira é simples, quando o nosso programa for pegar o dado de seu teclado, digite qualquer coisa que não seja um número, como uma letra e veja  o que ocorre:

Como hackear com Python
 O erro aconteceu na função int(), que esperava receber um valor numérico e recebeu um caractere. Mais pra frente, vamos aprender como contornar isso, garantir que o dado que o usuário forneça seja o que realmente estamos desejando, senão isso pode dar brechas de seguranças em nossos programas e sistemas em Python.

O outro problema que encontramos é usando números mesmo.
Digite, por exemplo, o valor 3 ou qualquer outro que não seja 1 ou 2:
Como programar em Python
Opaaa! Pera lá!
Digitei 3 e apareceu que devo torcer Flamengo?

Por que apareceu isso?
Eu não torço nem dei a entender que queria isso como resposta, por que apareceu esta mensagem?

Você consegue identificar o motivo disso ocorrer?
No próximo tutorial de nosso módulo de Testes e Laços em Python, vamos explicar melhor isso e, claro, consertar essa falha.

7 comentários:

  1. else:
    print('Você deve torcer Flamengo'), ou seja, o código em "else" serve para qualquer outra coisa que o usuário for digitar além de "1".

    ResponderExcluir
    Respostas
    1. ... e que esteja contido no intervalo de números inteiros, no caso!

      Excluir
  2. try:
    time = int(input("Digite:\n"
    "1 para Flamengo\n"
    "2 para Corinthians"))

    if (time == 1):
    print("Você é flamenguista!")
    elif (time == 2):
    print("Você é corintiano!")
    else:
    print("Você não torce pra nenhum dos dois times!")

    except ValueError:
    print("O caractere digitado não é válido!")

    ResponderExcluir
  3. E isso aí! Mais um dia, mais um bom conteúdo aprendido aqui.

    ResponderExcluir
  4. print('1. Corinthians')
    print('2. Flamengo')
    print('3. Palmeiras')
    resposta = int (input('\nQual melhor time: ') )

    if resposta == 1:
    print('Você deve ser corinthiano')
    if resposta == 2:
    print('Você deve torcer Flamengo')
    else:
    print ('Você deve torcer para o Guarani da capital, bi-rebaixado e sem mundial! KKKK')

    ResponderExcluir
    Respostas
    1. Mas o Palmeiras tem Mundial. Vc q acha q não, já que o corintiano e o flamenguista ganha mais comprando juiz q jogando de verdade.

      Excluir