Estruturas Condicionais
São instruções usadas para controlar o fluxo do programa baseado em condições.
Se, Senão Se, Senão - If, elif, else
If serve para executar um trecho de codigo se a condição for verdadeira, elif serve para verificar uma condição após não entrar no if, e o else só executa quando nenhum if ou elif é verdadeiro.
idade = 18
if idade > 18:
print("Você é maior de idade. tem mais de 18")
elif idade < 18:
print("Você é Menor de idade")
else:
print("Você Tem 18 anos.")
Expressões condicionais - inline if-else expressions
Expressões condicionais, também conhecida em outras linguagens como operador ternário, é uma forma compacta de escrever uma instruções condicionais simples.
estrutura:
variavel = "Valor Padrão" SE condição for verdadeira SENÃO valor_novo
idade = 20
status = "Adulto" if idade >= 18 else "Menor de idade"
print(status)
# alternativa mais compacta ainda
print(f"{'Adulto' if int(input()) >= 18 else 'Menor de idade'}")
Match Case
O match case é uma estrutura de controle em Python que permite executar um bloco de código com base em uma condição de comparação. Com match-case, o código fica mais limpo e estruturado, especialmente quando há várias condições a serem verificadas.
Em vez de ter longas cadeias de if-elif-else, match-case não apenas verifica igualdade, mas faz o desempacotamento automático de valores ao comparar com o padrão especificado. Esse é um dos grandes benefícios do pattern matching: ele permite combinar e capturar os elementos de uma estrutura como tuplas, listas ou objetos de forma automática e elegante.
| Comparativo Match Case vs If Else
# Condição simples
comando = "start"
match comando:
case "start":
print("Iniciando...")
# Condição: verificar tipo de dados
valor = [1, 2, 3]
match valor:
case int():
print("É um número inteiro.")
case list():
print("É uma lista.")
# Condição: verificar padrão da tupla
item = ("ação", "book",12.99)
match item:
# Verifica se é uma tupla, ignora o primeiro valor, se o segundo valor é book, e salva o terceiro valor na variavel preco
case (_,"book", preco):
print(f"Livro com preço de {preco}")
case _:
print("Item desconhecido")
# Condição: verificar tupla com filtro
pessoa = ("Maria", 30)
match pessoa:
case (nome, idade) if idade >= 18:
print(f"{nome} é adulta.")
match-case verifica automaticamente o tipo de dado conforme a declação da condição () para tuplas, [] para listas, {} para dicionários (faz um isinstance internamente).
# Condição simples:
comando = "start"
if comando == "start":
print("Iniciando...")
# Condição: verificar tipo de dados
valor = [1, 2, 3]
if isinstance(valor, int):
print("É um número inteiro.")
elif isinstance(valor,list):
print("É uma lista")
# Condição: verificar padrão da tupla
item = ("ação", "book",12.99)
if isinstance(item, tuple) and item[1] == "book":
print(f"Livro com preço de {item[2]}")
# Condição: verificar tupla com filtro
pessoa = ("Maria", 30)
if isinstance(pessoa, tuple) and pessoa[1] >= 18:
print(f"{pessoa[0]} é adulta.")
notas = {
"Joãos": 7.5,
"Maria": 8.0,
"Pedro": 6
}
match notas:
# verifica se João está no dicionario independente da nota (_)
case {'João': _}:
print("João está no dicionário!")
case {'Maria': 9.0}:
print("Maria Tirou 9")
case _:
print("Nenhum dos alunos acima está no dicionário!")