DEV Community

Joao Carlos Sousa do Vale
Joao Carlos Sousa do Vale

Posted on • Updated on

Estruturas de Seleção em Python - #07

Introdução

Estruturas de seleção ampliam a nossa capacidade de desenvolver algoritmos mais sofisticados, até então, desenvolvemos algoritmos que se assemelham a uma calculadora matemática mais refinada.

Problemas que envolvem questões como, por exemplo:

  • verificar se o valor digitado pelo usuário está correto, como um login e senha;
  • calcular bônus salarial, se o empregado possuir mais que 3 anos de empresa o bônus será de 15% e para funcionários com menor tempo de empresa será somente de 10%;
  • calcular desconto de produtos em situações em que casais com mais de dois filhos possuem desconto na compra de produtos.

Situações que envolvem análise de condições, provavelmente exigirá o uso de estruturas de seleção.

Neste capítulo aprenderemos as estruturas de seleção presentes na linguagem Python.

Sintaxes

Vamos começar implementando o seguinte algoritmo: leia o valor de duas notas de prova, se a média for maior ou igual a 7.0, informe que o aluno foi aprovado, senão o aluno deverá fazer a prova final.

Podemos usar o seguinte código media.py:

#Programa - media.py
print("Digite a nota 1: ")
nota1 = float(input())

print("Digite a nota 2: ")
nota2 = float(input())

media = (nota1 + nota2) / 2

if media >= 7.0 :
    print("O aluno foi aprovado com media " + str(media))
else :
    print(f"O aluno obteve a media {str(media)}, deve fazer a prova final")
Enter fullscreen mode Exit fullscreen mode

Nas linhas 01 e 02 lemos do teclado e convertemos para um número de ponto flutuante, a primeira nota. E nas linhas 04 e 05 o valor da segunda nota.

Calcula-se a média na linha 07 e armazena-se na variável media.

O uso da estrutura de repetição if está ilustrado entre as linhas 09 e 12. Se (if) a media for maior igual a 7.0, vamos imprimir que o aluno foi aprovado, senão (else), indicaremos que ele precisará fazer a prova final.

Na linha 09 usamos a sintaxe if (<condição>) :, e as instruções na linha após os dois pontos e espaçadas para a direita, serão executadas se a condição for satisfeita. Caso contrário, temos a cláusula else, que especifica o código a ser executado se a condição no if não for satisfeita ou verdadeira.

#Exemplo - execução de media.py e o aluno sendo aprovado
Digite a nota 1: 
6.5
Digite a nota 2: 
7.5
O aluno foi aprovado com media 7.0
Enter fullscreen mode Exit fullscreen mode
#Exemplo - execução de media.py e o aluno não sendo aprovado
Digite a nota 1: 
6.66
Digite a nota 2: 
7.0
O aluno obteve a media 6.83, deve fazer a prova final
Enter fullscreen mode Exit fullscreen mode

Indicar se a condição foi satisfeita é verificar se o valor dela é verdadeiro, ou seja, pode ser representado por um booleano.

Sintaxe if

A sintaxe da seleção simples consiste de:

  • palavra reservada if
  • uma condição ou expressão booleana
  • dois pontos (:)
  • bloco de código a ser executado se a condição é True
#Sintaxe if
if condição :
    instruções
Enter fullscreen mode Exit fullscreen mode

Veja como identificar se um número é par, utilizando a sintaxe if:

#Algoritmo - número par
print("Digite um numero: ")
num = int(input())
if num % 2 == 0 :
    print("O numero " + str(num) + " eh par")
Enter fullscreen mode Exit fullscreen mode

Condição para um número ser par: o resto da divisão por 2 é zero, ou, é múltiplo de 2.

Sintaxe else

A cláusula else não possui condição, ela sempre acompanha um if.

Em sua sintaxe:

  • palavra reservada else
  • dois pontos (:)
  • bloco de código a ser executado se a condição if é False.
#Seleção if-else
if condição :
    instruções
else :
    instruções
Enter fullscreen mode Exit fullscreen mode

Alterando o algoritmo anterior para imprimir se um número é par ou ímpar:

#Algoritmo - número par ou ímpar
print("Digite um numero: ")
num = int(input())
if num % 2 == 0 :
    print("O numero " + str(num) + " eh par")
else:
    print("O numero " + str(num) + " eh impar")
Enter fullscreen mode Exit fullscreen mode

Sintaxe elif

A cláusula elif permite usar condicionais e é verificado somente se as condições anteriores forem falsas. Sua sintaxe contem:

  • palavra reservada elif
  • uma condição ou expressão booleana
  • dois pontos (:)
  • bloco de código a ser executado se a condição elif é True.

Algoritmo para verificar se um número é múltiplo de 2, ou de 3 ou de 5:

#Algoritmo - múltiplo de 2, 3, 5
print("Digite um numero: ")
num = int(input())
if num % 2 == 0 :
    print("O numero " + str(num) + " eh multiplo de 2")
elif num % 3 == 0:
    print("O numero " + str(num) + " eh multiplo de 3")
elif num % 5 == 0:
    print("O numero " + str(num) + " eh multiplo de 5")
Enter fullscreen mode Exit fullscreen mode

Podemos utilizar if, elif e else em uma mesma instrução condicional, como:

#Algoritmo - múltiplo de 2, 3, 5 ou outro
print("Digite um numero: ")
num = int(input())
if num % 2 == 0 :
    print("O numero " + str(num) + " eh multiplo de 2")
elif num % 3 == 0:
    print("O numero " + str(num) + " eh multiplo de 3")
elif num % 5 == 0:
    print("O numero " + str(num) + " eh multiplo de 5")
else
    print("O numero " + str(num) + " nao eh multiplo de 2, 3, 5")
Enter fullscreen mode Exit fullscreen mode

Veja outros exemplos, como escrever um algoritmo que recebe 3 números e identifica o maior de todos?

#Programa 03.2 - maxOf3.py
print("Digite o valor 1: ")
valor1 = int(input())

print("Digite o valor 2: ")
valor2 = int(input())

print("Digite o valor 3: ")
valor3 = int(input())

if (valor1 >= valor2):
    if (valor1 >= valor3):
        print(f"O valor {valor1} eh maior de todos")
    else:
        print(f"O valor {valor3} eh maior de todos")
else:
    if (valor2 >= valor3):
        print(f"O valor {valor2} eh maior de todos")
    else:
        print(f"O valor {valor3} eh maior de todos")
Enter fullscreen mode Exit fullscreen mode

Como se pode observar no código acima, podemos utilizar if dentro de if, o que denominamos de if aninhados. Dentro de um if é possível escrever qualquer instrução válida.

Podemos simplificar um pouco o programa acima, e gerar uma outra versão, fazendo uso do operador and.

#Programa 03.2 - maxOf3V2.py
print("Digite o valor 1: ")
valor1 = int(input())

print("Digite o valor 2: ")
valor2 = int(input())

print("Digite o valor 3: ")
valor3 = int(input())

if (valor1 >= valor2 and valor1 >= valor3):
    print(f"O valor {valor1} eh maior de todos")

if (valor2 >= valor1 and valor2 >= valor3):
    print(f"O valor {valor2} eh maior de todos")

if (valor3 >= valor1 and valor3 >= valor2):
    print(f"O valor {valor3} eh maior de todos")
Enter fullscreen mode Exit fullscreen mode

Erros comuns

A identação usada, os 4 espaços, para reconhecer um bloco de código deve ser respeitada. A linguagem Python não aceita identações que fujam a este padrão.

#Erro de identação usando shell
>>> idade = 20
>>> if idade > 20:
...     print("Idade maior que 20")
...       print("Fora de identação")
  File "<stdin>", line 3
    print("Fora de identação")
                              ^
IndentationError: unindent does not match any outer indentation level
Enter fullscreen mode Exit fullscreen mode

Top comments (0)