Declarações Condicionais em Python

PythonBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a controlar o fluxo dos seus programas Python usando instruções condicionais. Começaremos entendendo o conceito de execução sequencial de programas e, em seguida, introduziremos a lógica condicional, que permite que os programas tomem decisões.

Você implementará a lógica de ramificação única e dupla usando as instruções if e if-else, e explorará a lógica de múltiplas ramificações com if-elif-else. O laboratório também abordará instruções if aninhadas, a instrução pass e apresentará a instrução match-case disponível no Python 3.10 e versões posteriores. Ao final deste laboratório, você será capaz de escrever código Python que executa diferentes blocos de instruções com base em condições específicas.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 100%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Compreender o Fluxo Sequencial e Introduzir a Lógica Condicional

Nesta etapa, exploraremos o conceito de fluxo sequencial na programação e introduziremos a lógica condicional, que permite que os programas tomem decisões.

O fluxo sequencial é o tipo mais básico de execução de programa. As instruções são executadas uma após a outra, de cima para baixo.

O ambiente de laboratório já criou um arquivo chamado sequential.py para você no diretório ~/project. Localize este arquivo no explorador de arquivos do WebIDE no painel esquerdo e abra-o.

Adicione o seguinte código a sequential.py:

print("First instruction")
print("Second instruction")
print("Third instruction")

Salve o arquivo. Para executar o script, abra o terminal integrado no WebIDE e execute o seguinte comando:

python ~/project/sequential.py

Você verá a saída impressa na ordem exata em que as instruções print aparecem no script:

First instruction
Second instruction
Third instruction

Isso demonstra o fluxo sequencial. No entanto, os programas frequentemente precisam se comportar de maneira diferente com base em certas condições. É aqui que entra a lógica condicional. A instrução condicional mais fundamental em Python é a instrução if, que executa um bloco de código somente se uma condição especificada for verdadeira.

A sintaxe básica de uma instrução if é:

if condition:
    ## Code to execute if the condition is true
    ## This block must be indented

Agora, substitua o conteúdo de sequential.py pelo seguinte código para incluir uma instrução if:

x = 10

print("Before the if statement")

if x > 5:
    print("x is greater than 5")

print("After the if statement")

Salve o arquivo e execute-o novamente:

python ~/project/sequential.py

A saída será:

Before the if statement
x is greater than 5
After the if statement

A condição x > 5 é verdadeira, então o bloco de código recuado (indentado) dentro da instrução if é executado.

Agora, vamos ver o que acontece quando a condição é falsa. Modifique sequential.py alterando o valor de x para 3:

x = 3

print("Before the if statement")

if x > 5:
    print("x is greater than 5")

print("After the if statement")

Salve o arquivo e execute-o:

python ~/project/sequential.py

A saída será:

Before the if statement
After the if statement

Desta vez, a condição x > 5 é falsa, então o bloco de código dentro da instrução if é ignorado. Este exemplo simples ilustra como a instrução if introduz a tomada de decisão em nossos programas.

Implementar Lógica de Ramificação Única e Dupla com if e if-else

Nesta etapa, focaremos na implementação de lógica de ramificação única e dupla usando as instruções if e if-else.

A instrução if permite a execução de ramificação única. Vamos usar o arquivo branching.py que foi preparado para você. Abra branching.py no explorador de arquivos.

Adicione o seguinte código para demonstrar uma instrução if de ramificação única:

score = 85

if score >= 70:
    print("Congratulations! You passed.")

print("End of program.")

Salve o arquivo e execute-o a partir do terminal:

python ~/project/branching.py

A saída será:

Congratulations! You passed.
End of program.

Como score é 85, a condição é verdadeira e a mensagem de parabéns é impressa.

Embora if seja útil, muitas vezes precisamos executar um bloco de código diferente quando a condição é falsa. É aqui que entra a instrução if-else, fornecendo lógica de ramificação dupla.

A sintaxe de uma instrução if-else é:

if condition:
    ## Code to execute if the condition is true
else:
    ## Code to execute if the condition is false

Vamos modificar branching.py para usar uma instrução if-else. Substitua o conteúdo atual pelo seguinte:

score = 85

if score >= 70:
    print("Congratulations! You passed.")
else:
    print("Keep trying. You can do better.")

print("End of program.")

Salve e execute o script. Com score como 85, o bloco if é executado:

Congratulations! You passed.
End of program.

Agora, para testar o bloco else, modifique o score para 65 em branching.py:

score = 65

if score >= 70:
    print("Congratulations! You passed.")
else:
    print("Keep trying. You can do better.")

print("End of program.")

Salve o arquivo e execute-o novamente:

python ~/project/branching.py

A saída agora será:

Keep trying. You can do better.
End of program.

Como score é 65, a condição if é falsa, e o código no bloco else é executado. A instrução if-else é essencial para lidar com dois resultados possíveis.

Implementar Lógica de Múltiplas Ramificações com if-elif-else

Nesta etapa, aprenderemos como lidar com situações com mais de dois resultados possíveis usando a instrução if-elif-else, que fornece lógica de ramificação múltipla.

A estrutura if-elif-else verifica as condições sequencialmente. Se a condição if for falsa, ela verifica a primeira condição elif (abreviação de "else if"), e assim por diante. Se nenhuma condição for verdadeira, o bloco else é executado.

A sintaxe básica é:

if condition1:
    ## Executes if condition1 is true
elif condition2:
    ## Executes if condition1 is false and condition2 is true
else:
    ## Executes if all previous conditions are false

Abra o arquivo multibranch.py no WebIDE. Escreveremos um script para determinar uma nota (conceito) com base em uma pontuação numérica. Adicione o seguinte código:

score = 88

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Salve o arquivo e execute-o a partir do terminal:

python ~/project/multibranch.py

A saída será:

Grade: B
Grading complete.

O programa verifica score >= 90 (falso), depois score >= 80 (verdadeiro), imprime "Grade: B" e pula o restante da cadeia.

Agora, vamos testar o bloco else. Modifique multibranch.py para definir a pontuação como 55:

score = 55

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Salve e execute o script:

python ~/project/multibranch.py

A saída será:

Grade: F
Grading complete.

Finalmente, para preparar para a verificação, altere a pontuação para 75 em multibranch.py:

score = 75

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Salve e execute o script pela última vez:

python ~/project/multibranch.py

A saída será:

Grade: C
Grading complete.

A estrutura if-elif-else é poderosa para lidar com múltiplos casos distintos. Lembre-se de que apenas o bloco de código da primeira condição verdadeira é executado.

Explorar Declarações if Aninhadas e a Declaração pass

Nesta etapa, exploraremos instruções if aninhadas, onde uma instrução if é colocada dentro de outra, e também aprenderemos sobre a instrução pass.

Instruções if aninhadas são úteis quando você precisa verificar uma condição e, se for verdadeira, verificar outra subcondição.

Abra o arquivo nested_if.py no WebIDE. Adicione o seguinte código, que verifica a elegibilidade para voto com base na idade e cidadania.

age = 20
is_citizen = True

if age >= 18:
    print("You are old enough to vote.")
    if is_citizen:
        print("You are also a citizen.")
        print("You are eligible to vote.")
    else:
        print("You are not a citizen.")
        print("You are not eligible to vote.")
else:
    print("You are not old enough to vote.")
    print("You are not eligible to vote.")

print("Voting eligibility check complete.")

Salve o arquivo e execute-o:

python ~/project/nested_if.py

A saída será:

You are old enough to vote.
You are also a citizen.
You are eligible to vote.
Voting eligibility check complete.

Tanto a condição externa (age >= 18) quanto a condição interna (is_citizen) são verdadeiras.

Agora, vamos ver a instrução pass. A instrução pass é uma operação nula; nada acontece quando ela é executada. É um espaço reservado útil quando uma instrução é sintaticamente necessária, mas você ainda não escreveu o código para ela.

Substitua o conteúdo de nested_if.py por este exemplo usando pass:

age = 18

if age >= 18:
    pass ## Placeholder for future code
else:
    print("You are not old enough to vote.")

print("Check complete.")

Salve e execute o script:

python ~/project/nested_if.py

A saída será:

Check complete.

A condição if é verdadeira, então a instrução pass é executada (não fazendo nada), e o bloco else é ignorado.

Finalmente, para preparar para a verificação, modifique nested_if.py para usar a lógica original, mas com uma idade que falha na primeira verificação.

age = 16
is_citizen = True

if age >= 18:
    print("You are old enough to vote.")
    if is_citizen:
        print("You are eligible to vote.")
    else:
        print("You are not eligible to vote.")
else:
    print("You are not old enough to vote.")
    print("You are not eligible to vote.")

print("Voting eligibility check complete.")

Salve e execute o script:

python ~/project/nested_if.py

A saída será:

You are not old enough to vote.
You are not eligible to vote.
Voting eligibility check complete.

Aqui, a condição if externa (age >= 18) é falsa, então o bloco else externo é executado, e a estrutura if-else interna é completamente ignorada.

Introduzir a Declaração match-case (Python 3.10+)

Nesta etapa, exploraremos a instrução match-case, um recurso introduzido no Python 3.10 para correspondência estrutural de padrões (structural pattern matching). Ela oferece uma alternativa mais legível às cadeias if-elif-else para certos cenários.

A instrução match-case compara um valor com uma série de padrões e executa o bloco de código para o primeiro padrão correspondente.

A sintaxe básica é:

match value:
    case pattern1:
        ## Code for pattern1
    case pattern2:
        ## Code for pattern2
    case _:
        ## Code for no match (wildcard)

Abra o arquivo match_case.py no WebIDE. Adicione o seguinte código para imprimir o dia da semana com base em um número.

day_number = 3

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Salve o arquivo e execute-o. O comando python neste ambiente é configurado para uma versão compatível por padrão.

python ~/project/match_case.py

A saída será:

Wednesday
Day check complete.

O valor 3 corresponde a case 3:, então "Wednesday" é impresso.

Agora, vamos testar o caso curinga (wildcard). Modifique match_case.py para usar um número inválido:

day_number = 10

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Salve e execute o script:

python ~/project/match_case.py

A saída será:

Invalid day number
Day check complete.

Como 10 não corresponde a nenhum caso específico, o curinga case _: é correspondido.

Finalmente, para preparar para a verificação, altere day_number para 6 em match_case.py:

day_number = 6

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Salve e execute o script pela última vez:

python ~/project/match_case.py

A saída será:

Saturday
Day check complete.

A instrução match-case pode ser uma maneira mais limpa de lidar com múltiplos valores específicos em comparação com uma longa cadeia if-elif-else.

Resumo

Neste laboratório, você aprendeu a controlar o fluxo dos seus programas Python. Você começou com o fluxo sequencial do programa e depois passou para a lógica condicional. Você implementou lógica de ramificação única com if, lógica de ramificação dupla com if-else e lógica de múltiplas ramificações com if-elif-else. Você também explorou como criar estruturas de decisão mais complexas com instruções if aninhadas e como usar a instrução pass como um espaço reservado (placeholder) de código. Finalmente, você foi apresentado à instrução match-case como uma alternativa moderna para ramificação baseada em padrões. Agora você está apto a escrever programas Python que podem tomar decisões e executar diferentes caminhos de código com base em condições específicas.