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.

estrutura_if.py
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

expressoes_condicionais.py
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-elsematch-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

match_case.py
# 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). 

if_else.py
# 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.")
match_case_dicionario.py
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!")