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")
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
#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
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
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")
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
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")
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")
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")
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")
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")
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
Top comments (0)