Estruturas de Seleção em Python - #07
Joao Carlos Sousa do Vale
Posted on May 2, 2022
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
Posted on May 2, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
May 13, 2023