Decisões
As decisões alteram o fluxo normal de um programa que é de cima para baixo.
Uma decisão é o resultado da avaliação de uma expressão lógica e/ou relacional. As expressões lógicas/relacionais retornam sempre True ou False.
Dependendo desse resultado uma decisão pode executar um bloco de instruções ou outro ou nenhum.
if
Sintaxe:
if condição:
bloco código
A condição é uma expressão lógica/relacional que retorna True ou False.
Se a condição fôr verdadeira o bloco de código é executado, caso contrário não é.
Exemplo:
nr = 34
#A condição retorna True logo, executa o bloco de código:
if nr > 30:
nr += 3
print( nr )
#A condição retorna False logo, não executa o bloco de código:
if nr < 10 or nr > 50:
nr = nr * 2
print( nr )
if … else
Sintaxe:
if condição:
bloco código 1
else:
bloco código 2
Se a condição retornar True executa o bloco de código 1. Caso contrário, executa o bloco de código 2.
Exemplo:
lst = [2, 4, 6, 8]
#A condição retorna False e, logo, executa o bloco de código do else:
if lst[2] == 5:
lst[2] += 2
else:
lst[2] -= 2
if … elif … else
Sintaxe:
if condição_1:
bloco código 1
[elif condição_2:
bloco código 2]
...
[elif condição_n:
bloco código n]
[else:
bloco código else]
A instrução elif permite avaliar várias condições e executar o respetivo bloco de código caso alguma delas retorne True.
Se todas as condições avaliadas retornarem False, é executado o bloco de código da instrução else.
Numa decisão múltipla podem haver várias instruções elif mas só uma instrução else que deve ser a última e é opcional.
Exemplo:
nota = int( input("Digite a sua nota: ") )
if nota < 10:
print("Chumbou")
elif nota < 13:
print("Suficiente")
elif nota < 16:
print("Bom")
elif nota < 18:
print("Muito bom")
elif nota <= 20:
print("Excelente")
else:
print("Nota inválida")
match
A instrução match
foi introduzida no Python 3.10 e oferece uma alternativa moderna, legível e poderosa à instrução if...elif...else
, permitindo comparar valores e padrões de maneira clara e eficiente.
O match
é uma estrutura de controle de fluxo que compara o valor de uma expressão com diferentes padrões definidos em blocos case
. Ele funciona de forma semelhante ao switch-case
de outras linguagens, mas com recursos avançados de correspondência de padrões.
match <expressão>:
case <valor_1>:
# instruções para valor_1
case <valor_2>:
# instruções para valor_2
case _:
# instruções padrão (caso nenhum valor anterior seja compatível)
O _
é equivalente ao else
da decisãoif...elif...else
ou ao default da estrutura switch...case
em C.
Não é necessário usar break
após cada case
; o Python encerra a verificação após o primeiro valor compatível.
Exemplo 1:
opcao = 'a'
match opcao:
case 'a':
print("Opção A selecionada")
case 'b':
print("Opção B selecionada")
case _:
print("Opção inválida")
Neste exemplo, se opcao
for 'a'
, imprime “Opção A selecionada”. Se for 'b'
, imprime “Opção B selecionada”. Para qualquer outro valor, imprime “Opção inválida”.
Exemplo 2:
day = input("Digite o dia da semana: ").capitalize()
match day:
case "Sábado" | "Domingo":
print(f"{day} é fim de semana.")
case "Segunda" | "Terça" | "Quarta" | "Quinta" | "Sexta":
print(f"{day} é dia útil.")
case _:
print("Dia inválido.")
Neste exemplo, tanto “Sábado” quanto “Domingo” acionam o mesmo bloco de código.
Exemplo 3:
def calcular_desconto(valor):
match valor:
case v if v < 1000:
return v * 0.05
case v if 1000 <= v < 5000:
return v * 0.10
case v if v >= 5000:
return v * 0.15
Neste exemplo, cada bloco case
avalia uma condição específica sobre o valor recebido.