• Python
  • 04. Desvios Condicionais (if)
  • Encadeando Condicionais

Encadeando condicionais#

É possível testar uma nova condição caso a anterior falhe, utilizando o operador elif. Ele pode ser lido como "senão, se". Vamos trabalhar com um exemplo.

Exercise 1

Teste o programa a seguir:

numero = int(input('Digite um número: '))

if numero == 0:
    print('0 não é nem par, nem ímpar')
elif numero % 2 == 0:  # Resto da divisão de número por 2
    print('{0} é par'.format(numero))
else:
    print('{0} é ímpar'.format(numero))

O que vai ser impresso no terminal se o número 0 for digitado?

Answer

Ao digitar o número 0, a codição numero == 0 será avaliada como 0 == 0 resultando no valor booleano True.

Desta forma, o bloco do if será executado imprimindo a mensagem 0 não é nem par, nem ímpar no terminal.

Como a condição do if foi executada, as condições do elif e else não serão avaliadas.

Exercise 2

numero = int(input('Digite um número: '))

if numero == 0:
    print('0 não é nem par, nem ímpar')
elif numero % 2 == 0:  # Resto da divisão de número por 2
    print('{0} é par'.format(numero))
else:
    print('{0} é ímpar'.format(numero))

O que vai ser impresso no terminal se o número 11 for digitado?

Answer

Ao digitar o número 11, a condição numero == 0 será avaliada como 11 == 0 resultando no valor booleano False. Então, o bloco do if não será executado.

Em seguida, a próxima condição elif numero % 2 == 0: será avaliada como elif 11 % 2 == 0: resultando também no valor booleano False, pois o resto da divisão de 11 por 2 é 1. Então o bloco do elif também não será executado.

Como nenhuma das condições dos blocos do if e do elif foram avaliadas com o resultado True, então o bloco do else é executado, imprimindo a mensagem 11 é impar.

Exercise 3

numero = int(input('Digite um número: '))

if numero == 0:
    print('0 não é nem par, nem ímpar')
elif numero % 2 == 0:  # Resto da divisão de número por 2
    print('{0} é par'.format(numero))
else:
    print('{0} é ímpar'.format(numero))
O que vai ser impresso no terminal se o número 10000 for digitado?

Answer

Ao digitar o número 10000, a condição numero == 0 será avaliada como 10000 == 0 resultando no valor booleano False. Então o bloco do if não será executado.

Em seguida, a próxima condição elif numero % 2 == 0: será avaliada como elif 10000 % 2 == 0: resultando no valor booleano True, pois o resto da divisão de 10000 por 2 é 0. Então o bloco do elif é executado imprimindo a mensagem 10000 é par no terminal.

Como a condição do elif foi avaliada com o valor True, então o bloco de código do else não é executado.

Exercise 4

Se numero for igual a zero, tanto numero == 0 quanto numero % 2 == 0 são True. Por que quando o usuário digita o número zero o programa não imprime 0 é par?

Answer

Quando queremos avaliar várias opções no Python utilizamos os operadores condicionais encadeados if-elif-else.

Ao utiliza os operadores condicionais encadeados, somente um bloco de código será executado. E será o bloco de código que pertence a primeira condição avaliada como True. Ou o bloco de código do else caso nenhuma condição seja avaliada como True.

No nosso caso, o if numero == 0 foi o primeiro a ser avaliado com o valor True fazendo com que as outras condições sejam ignoradas, mesmo que essas outras condições resultem no valor True.

Exercise 5

Por que podemos utilizar o else para imprimir que o número é ímpar? Em outra palavras, por que não precisamos de um elif numero % 2 != 0:?

Answer

Porque se o número não for 0, nem par então a única opção possível é que ele seja ímpar. Assim, não precisamos fazer uma condição para esse caso.

Exercise 6

Resolva o exercício X maior que Y (Versão 2).

Acessar exercício

Exercise 7

Considere o código a seguir:

salario = 500

if salario < 1000:
    print('Parabéns, você recebeu um aumento salarial!')
    salario = 1000
elif salario < 1500:
    print('Parabéns, você recebeu um aumento salarial!')
    salario = 1500
else:
    print('Parabéns, você recebeu um aumento salarial!')
    salario = 2000

Qual será o valor armazenado na variável salario ao final da execução deste código?

Answer

Ao final da execução do código a variável salario estará com o valor 1000 armazenado.

No início do código, a variável salario recebe o valor 500.

A condição do if é avaliada como 500 < 1000 resultando no valor True. Dessa forma, o bloco do if é executado. E como o código utiliza condicionais encadeados, as outras condições não são avaliadas.

Exercise 8

Considere o código a seguir:

salario = 500

if salario < 1000:
    print('Parabéns, você recebeu um aumento salarial!')
    salario = 1000
if salario < 1500:
    print('Parabéns, você recebeu um aumento salarial!')
    salario = 1500
if salario < 2000:
    print('Parabéns, você recebeu um aumento salarial!')
    salario = 2000

Este código é muito similar ao código do exercício anterior. Será que ele se comporta da mesma forma?

Qual será o valor armazenado na variável salario ao final da execução deste código?

Answer

No início do código, a variável salario recebe o valor 500.

A condição do if é avaliada como 500 < 1000 resultando no valor True. Dessa forma, o bloco do if é executado e a variável salario recebe o valor 1000.

Logo em seguida, existem outros dois operadores condicionais if que serão avaliados também, pois não se tratam de operadores condicionais encadeados.

Desta forma, ao final da execução do código, o valor armazenado na variável salario será 2000.

If's encadeados#

Dentro do bloco de um if, elif ou else, podemos ter qualquer código Python válido. Inclusive outros if's. Considere a função a seguir, que, dado o nível de gasolina no carro e a quantidade de dinheiro que a pessoa possui no momento, sugere o que a pessoa deve fazer para aproveitar o feriado.

Exercise 9

Considere o seguinte código:

gasolina = 5
dinheiro = 100

if gasolina > 10:
    print("Você pode aproveitar o feriado e ir para a praia.")
else:
    if dinheiro < 100:
        print("Melhor ficar em casa.")
    else:
        print("Você deveria abastecer o carro antes de ir para a praia.")

O que será impresso no terminal?

Answer

A condição gasolina > 10 do primeiro if será avaliada como 5 > 10, resultando no valor False. Então, o bloco do else será executado.

Dentro do bloco do else, a condição dinheiro < 100 será avaliada como 100 < 100, resultando também no valor booleano False.

Executando o bloco do else e imprimindo o texto Você deveria abastecer o carro antes de ir para a praia..

Agora vamos ver os Operadores Lógicos.