O que são as instruções 'else' e 'elif'?

Concluído

E se você também quiser que seu programa execute uma parte do código quando a expressão de teste for False? Ou se você quiser incluir outra expressão de teste? O Python tem outras palavras-chave que você pode usar para fazer instruções if mais complexas, else e elif. Ao usar if, else e elif em combinação, você pode escrever programas complexos com várias expressões de teste e instruções para executar.

Trabalhar com else

Você sabe que quando usa uma instrução if, o corpo do programa será executado somente se a expressão de teste for True. Para adicionar mais código que será executado quando a expressão de teste for False, você precisará adicionar uma instrução else.

Vamos adaptar um exemplo da seção anterior:

a = 27
b = 93
if a >= b:
    print(a)

Neste exemplo, se a não for maior ou igual a b, nada acontecerá. Digamos que você queira, em vez disso, imprimir b se a expressão de teste for False:

a = 27
b = 93
if a >= b:
    print(a)
else:
    print(b)

Saída: 93

Se a expressão de teste for False, o código no corpo da instrução if será ignorado e o programa continuará sendo executado por meio da instrução else. A sintaxe de uma instrução if/else é sempre:

if test_expression:
    # statement(s) to be run
else:
    # statement(s) to be run

Trabalhar com elif

No Python, a palavra-chave elif é a abreviação de else if. O uso de instruções elif permite que você adicione várias expressões de teste ao programa. Essas instruções são executadas na ordem em que são escritas, de modo que o programa vai inserir uma instrução elif somente se a primeira instrução if for False. Por exemplo:

a = 27
b = 93
if a <= b:
    print("a is less than or equal to b")
elif a == b:
    print("a is equal to b")

Saída: a is less than or equal to b

Nesta variação, a instrução elif neste bloco de código não será executada, pois a instrução if é True.

A sintaxe de uma instrução if/elif é:

if test_expression:
    # statement(s) to be run
elif test_expression:
    # statement(s) to be run

Combinar as instruções if, elif e else

Você pode combinar as instruções if, elif e else para criar programas com lógica condicional complexa. Lembre-se de que uma instrução elif é executada somente quando a condição if é false. Observe também que um bloco if pode ter apenas um bloco else, mas pode ter vários blocos elif.

Vamos examinar um exemplo com uma instrução if, elif e else:

a = 27
b = 93
if a < b:
    print("a is less than b")
elif a > b:
    print("a is greater than b")
else: 
    print ("a is equal to b")    

Um bloco de código que usa todos os três tipos de instruções tem a seguinte sintaxe:

if test_expression:
    # statement(s) to be run
elif test_expression:
    # statement(s) to be run
elif test_expression:
    # statement(s) to be run
else:
    # statement(s) to be run

Trabalhar com lógica condicional aninhada

O Python também dá suporte à lógica condicional aninhada, o que significa que você pode aninhar as instruções if, elif e else para criar programas ainda mais complexos. Para aninhar as condições, recue as condições internas e tudo o que estiver no mesmo nível de recuo será executado no mesmo bloco de código:

a = 16
b = 25
c = 27
if a > b:
    if b > c:
        print ("a is greater than b and b is greater than c")
    else: 
        print ("a is greater than b and less than c")
elif a == b:
    print ("a is equal to b")
else:
    print ("a is less than b")

Esse trecho de código produz a saída a is less than b.

A lógica condicional aninhada segue as mesmas regras que a lógica condicional regular dentro de cada bloco de código. Veja um exemplo da sintaxe:

if test_expression:
    # statement(s) to be run
    if test_expression:
        # statement(s) to be run
    else: 
        # statement(s) to be run
elif test_expression:
    # statement(s) to be run
    if test_expression:
        # statement(s) to be run
    else: 
        # statement(s) to be run
else:
    # statement(s) to be run