CURSOS / TECNOLOGIA / PYTHON NA PRÁTICA (ETAPA 2 DE 5)
← Voltar aos cursos
CURSO PRÁTICO · ETAPA 2 DE 5 · PYTHON 3

Lógica de Decisão e Interatividade

Dê inteligência e memória aos seus programas: tome decisões com condicionais if-elif-else, organize dados estruturados em dicionários (com leitura segura via .get() e aninhamento) e interaja em tempo real usando input() e laços while.

Ilustração editorial mostrando fluxos condicionais em Python, dicionários chave-valor e laços while com terminal
Capítulos 5 a 7Condicionais if, dicionários e laços while
6 Oficinas + LabCódigo copiável e simulador de decisão ao vivo
Podcast IntegradoEpisódio sobre condicionais, dicionários e loops

Trilha Completa em 5 Etapas

Você está na Etapa 2: Lógica de Decisão e Interatividade.

PODCAST DE APOIO · REPRODUÇÃO DIRETA NA PÁGINA

Condicionais, dicionários e loops em Python

Ouça o episódio de Garlucas direto por aqui antes ou depois das oficinas para conectar testes booleanos, acesso seguro em dicionários e controle de repetição com while em cenários práticos.

Abrir episódio no SoundCloud ↗

Oficinas Práticas — Capítulos 5 a 7

Python 3.9–3.11+
Diagrama visual mostrando fluxo condicional passando por portas lógicas, pares chave-valor e ciclo while com flag de saída
Fluxo da Etapa 2: expressões booleanas roteiam a execução, dicionários modelam entidades reais por chave-valor e while mantém a interação até a condição de saída.
OFICINA 01 · CAPÍTULO 5

Testes Condicionais, == vs. = e Operadores Lógicos

Toda estrutura if avalia uma expressão que resulta em True ou False. Um dos erros mais comuns de quem começa é confundir atribuição (=) com comparação de igualdade (==).

  • Igualdade e maiúsculas/minúsculas: 'Audi' == 'audi' retorna False; normalize com carro.lower() == 'audi' quando o texto vier do usuário.
  • Desigualdade e comparações numéricas: use !=, <, <=, >, >=.
  • Múltiplas condições: and exige que todas sejam verdadeiras; or exige pelo menos uma verdadeira.
  • Pertencimento em listas: verifique rapidamente com 'cogumelo' in ingredientes ou usuario not in banidos.
Python · Testes booleanos com in, not in e lower()
usuarios_banidos = ['andre', 'carolina', 'davi']
usuario = 'Maria'

if usuario.lower() not in usuarios_banidos:
    print(f"{usuario.title()}, você pode comentar agora.")
OFICINA 02 · CAPÍTULO 5

Cadeias if-elif-else, Múltiplos if e Listas Vazias

Escolher entre if-elif-else e vários if seguidos muda completamente o comportamento do seu código:

  • if-elif-else: executa apenas um bloco (o primeiro verdadeiro) e ignora os demais — ideal para faixas mutuamente exclusivas (ex.: preço do ingresso por idade). Você pode omitir o else final usando um último elif explícito para evitar entradas inesperadas.
  • Múltiplos if independentes: avalia todos os blocos — ideal quando mais de uma condição pode ser verdadeira ao mesmo tempo (ex.: adicionar vários extras em uma pizza).
  • Checando listas vazias: em Python, uma lista vazia [] avalia como False. Sempre teste if pedidos: antes de percorrer com for.
OFICINA 03 · CAPÍTULO 6

Dicionários: Pares Chave-Valor & Leitura Segura com .get()

Enquanto listas guardam itens por posição numérica, dicionários ({}) conectam uma chave única a um valor (que pode ser string, número, lista ou até outro dicionário). Desde o Python 3.7, dicionários preservam a ordem de inserção.

Evite KeyError! Acessar alien['pontos'] diretamente quebra o programa se a chave não existir. Use alien.get('pontos', 0) para retornar um valor padrão seguro (ou None se omitido).
Python · Criar, atualizar, remover (del) e ler com .get()
alien = {'cor': 'verde', 'pontos': 5}
alien['x'] = 0
alien['cor'] = 'amarelo'
del alien['pontos']

pontos = alien.get('pontos', 'Sem pontuação definida')
print(pontos)
OFICINA 04 · CAPÍTULO 6

Percorrendo Dicionários & Aninhamento de Dados

Para iterar sobre dicionários com clareza, escolha o método exato:

  • for chave, valor in linguagens.items(): percorre pares completos.
  • for nome in linguagens.keys(): (ou direto for nome in linguagens:) percorre apenas as chaves; combine com sorted() para ordem alfabética.
  • for lang in set(linguagens.values()): percorre valores eliminando duplicatas com set() (conjuntos).

Aninhamento (Nesting): você pode guardar uma lista de dicionários (ex.: frota de 30 aliens ou catálogo de usuários), uma lista dentro de um dicionário (ex.: ingredientes de um pedido) ou um dicionário dentro de outro (ex.: perfil completo por username).

OFICINA 05 · CAPÍTULO 7

Interatividade com input(), int() e Módulo %

A função input(prompt) pausa o programa, exibe uma mensagem clara ao usuário e sempre devolve uma string. Se você precisar comparar ou calcular com o número digitado, converta antes com int() (ou float()).

Já o operador módulo (%) retorna o resto da divisão inteira (ex.: 4 % 3 == 1), sendo a forma clássica de verificar se um número é par (numero % 2 == 0) ou múltiplo de 10.

Python · Entrada numérica segura e verificação de par/ímpar
numero = int(input("Digite um número inteiro: "))
if numero % 2 == 0:
    print(f"{numero} é par.")
else:
    print(f"{numero} é ímpar.")
OFICINA 06 · CAPÍTULO 7

Laços while, Flags, break/continue e Listas

Enquanto o laço for percorre uma coleção finita de itens, o laço while continua rodando enquanto uma condição permanecer verdadeira.

  • Use uma Flag (ativo = True): centraliza múltiplos eventos de parada (como vidas zeradas, tempo esgotado ou comando 'sair') em uma única variável booleana.
  • break vs. continue: break encerra o laço imediatamente; continue pula o restante da iteração atual e volta ao topo do laço.
  • Não modifique uma lista dentro de um for: o Python perde a conta dos índices. Para mover itens de nao_confirmados para confirmados ou remover todas as ocorrências de 'gato', use while (while nao_confirmados: ou while 'gato' in pets:).
  • Cuidado com laço infinito: garanta que ao menos uma variável da condição mude dentro do bloco (no terminal, Ctrl+C interrompe um laço preso).
LABORATÓRIO INTERATIVO · CAPÍTULOS 5, 6 E 7

Simulador de Decisão, Dicionário & Loop

Teste entradas reais para ver a avaliação do bloco if-elif-else, a busca segura com .get() e o estado da flag do laço while.

Ramo if-elif-else elif idade < 18 → Meia
Resultado de .get() ingressos.get('vip') → R$ 40
Estado do Laço while ativo = True (Próx. Ciclo)
Como 15 < 18, o Python executa o ramo elif e ignora o else. A leitura com .get() encontrou a chave 'vip' sem risco de KeyError.
VERIFICAÇÃO DE DOMÍNIO · 4 QUESTÕES

Teste Rápido da Etapa 2

Valide os conceitos dos Capítulos 5, 6 e 7 antes de avançar para Funções e Classes.

1. Quando você deve preferir vários blocos if independentes em vez de uma cadeia if-elif-else?

2. Qual a vantagem de usar usuario.get('cargo', 'Visitante') em vez de usuario['cargo']?

3. Qual é o tipo de dado retornado pela função input() em Python?

4. Por que devemos usar um laço while (e não for) ao remover ou mover itens de uma lista durante a iteração?

CONCLUSÃO DA ETAPA 2

Checklist de Prontidão & Exportação

Marque cada marco concluído; seu progresso fica salvo no navegador.

PRÓXIMA PARADA · ETAPA 3 DE 5

Organização, Arquitetura e Qualidade

Avance para os Capítulos 8 a 11: funções modulares, programação orientada a objetos com classes, leitura/escrita de arquivos JSON, tratamento de exceções e testes com pytest.

Ir para Etapa 3 →