Cinco mini-sistemas pra juntar tudo que você aprendeu até aqui: variáveis, condicionais, loops, listas e funções. Sem material novo — só você + Python + um cenário pra resolver.
Até aqui a gente foi por partes: primeiro variáveis, depois condicionais, aí loops + listas, e fechando com funções. Cada conceito veio com seu exerciciozinho — bonitinho, isolado, focado.
Mas a vida real não é assim. Quando você vai construir um sistema de verdade — uma lanchonete, um cinema, um app de academia — você precisa juntar tudo no mesmo programa. E é EXATAMENTE isso que vamos fazer agora.
Antes você treinava bíceps em UM aparelho, perna em OUTRO. Agora vem o "WOD do dia": 10 burpees + 15 agachamentos + 20 polichinelos, tudo junto, em ordem, com tempo. Cansativo? Sim. Mas é aí que o condicionamento aparece de verdade.
Cada desafio aqui é um WOD de programação. Você JÁ TEM tudo que precisa. O que falta é só… juntar.
Antes de começar, dá uma respirada e relembra o que você sabe fazer:
f"Total: R${total}" — montar mensagens bonitas
menu → while True → input()
→ if/elif/else → lista.append() →
break quando 0 → resumo final.
Decora esse esqueleto. Os 5 problemas são variações do mesmo tema.
Cada desafio tem cenário, menu mockado, regras, dica e olhinho 👀. Tenta sozinho ANTES de espiar — é aí que a mágica acontece.
Sua turma quer escolher um filme pra assistir junto na sexta. Em vez de discutir no grupo do WhatsApp por 2h, você decide automatizar: cada pessoa digita o número do filme preferido, e no final o programa mostra quem ganhou e por quantos votos.
0 - Encerrar votação. 📜while True pra repetir o menu enquanto o usuário não digitar 0. 🔁append). 📋0, saia do loop com break. 🚪lista.count("nome") pra contar votos de cada filme. 🔢
Crie votacao_filmes.py. Antes de qualquer loop, monte
uma função mostrar_menu() que faz
print dos filmes e do 0 - Encerrar.
Crie uma lista vazia: votos = []. Depois abre um
while True que: chama mostrar_menu(),
pede int(input(...)), e usa if/elif/else
pra decidir o que fazer.
Se for 1, faz votos.append("Interestelar").
Se for 0, break. Se for outra coisa,
mostra "opção inválida" (lembra do capítulo 03? mesmo padrão).
Depois do loop, descobre o vencedor. Você pode usar
max(votos, key=votos.count) ou comparar manualmente
os 3 count. Mostre com f-string.
# 🎬 Sistema de Votação de Filmes def mostrar_menu(): print("\n🎬 ===== VOTAÇÃO DE FILMES =====") print("1 - Interestelar") print("2 - Vingadores: Ultimato") print("3 - O Senhor dos Anéis") print("0 - Encerrar votação") # lista que vai guardar cada voto (como string) votos = [] while True: mostrar_menu() opcao = int(input("\nDigite o número do filme: ")) if opcao == 1: votos.append("Interestelar") print("✅ Voto registrado!") elif opcao == 2: votos.append("Vingadores: Ultimato") print("✅ Voto registrado!") elif opcao == 3: votos.append("O Senhor dos Anéis") print("✅ Voto registrado!") elif opcao == 0: break else: print("❌ Opção inválida, tenta de novo.") # --- resultado final --- if len(votos) == 0: print("\n🤷 Ninguém votou. Encerrando.") else: # max() com key=votos.count devolve o item que mais aparece vencedor = max(votos, key=votos.count) qtd = votos.count(vencedor) print("\n🏆 ===== RESULTADO =====") print(f"Filme vencedor: {vencedor}") print(f"Votos: {qtd}") print(f"Total de votos válidos: {len(votos)}")
votos_filme1, votos_filme2...), a gente guarda
todos os votos numa lista só e usa count() pra
descobrir quantos cada filme tem. Menos código, mais Python.
int(input()): se o usuário
digitar "abc" em vez de número, o programa quebra. Pra esse
desafio tá ok — mas em sistemas reais a gente trataria com
try / except (vamos ver lá no fim do bootcamp).
Você foi contratado pra automatizar o atendimento de uma lanchonete que ainda anota pedido em papel. O dono quer um terminal simples: o cliente escolhe os itens um por um, e no final o programa mostra quantos itens foram pedidos e o valor total.
0 - Finalizar Pedido. 📜while True repete enquanto o cliente não digitar 0. 🔁sum(lista) pra somar o total e len(lista) pra contar os itens. 🧮
Crie lanchonete_ai.py. Função mostrar_menu()
primeiro (é o mesmo padrão do desafio 1!).
Duas listas paralelas vão ser sua amiga: uma com os nomes dos itens pedidos e outra com os preços. Ou só uma de preços, se você quiser simplificar — vai dos dois jeitos.
No if/elif, cada opção append-a o preço
correspondente: opção 1 → 15, opção 2 → 18, etc.
No final, sum(precos) te dá o total e len(precos)
te dá quantos itens. Monta a frase com f-string e pronto.
# 🍔 Lanchonete AI Burgers def mostrar_menu(): print("\n🍔 ===== AI BURGERS =====") print("1 - X-Burger ........ R$15") print("2 - X-Salada ........ R$18") print("3 - Batata Frita .... R$10") print("4 - Refrigerante .... R$ 7") print("0 - Finalizar Pedido") # duas listas em paralelo: nome do item e preço itens = [] precos = [] while True: mostrar_menu() opcao = int(input("\nO que você quer? ")) if opcao == 1: itens.append("X-Burger"); precos.append(15) print("✅ X-Burger adicionado ao pedido!") elif opcao == 2: itens.append("X-Salada"); precos.append(18) print("✅ X-Salada adicionada ao pedido!") elif opcao == 3: itens.append("Batata Frita"); precos.append(10) print("✅ Batata Frita adicionada ao pedido!") elif opcao == 4: itens.append("Refrigerante"); precos.append(7) print("✅ Refrigerante adicionado ao pedido!") elif opcao == 0: break else: print("❌ Opção inválida, escolhe um número do menu.") # --- nota fiscal --- total = sum(precos) quantidade = len(itens) print(f"\n🧾 Total de {quantidade} item(s) - Valor total: R${total}")
itens, é só fazer um for nome in itens.
Programador bom é programador preguiçoso (no bom sentido) —
escreve hoje pensando em não sofrer amanhã.
O Cinema AI quer um caixa automático: o cliente fica em frente à máquina, escolhe quantos ingressos quiser (de qualquer filme), e no final o sistema mostra o total de ingressos comprados e o valor total.
0 pra finalizar. 🎬while True repete a compra. 🔁
Crie cinema_ai.py. Esse desafio é quase idêntico
ao da Lanchonete — só muda o cenário e a mensagem final. Aproveita o
código mental que você já tem.
Função mostrar_menu() com os 3 filmes. Lista
ingressos_precos = []. while True com
if/elif: opção 1 = append(25),
opção 2 = append(30), opção 3 = append(20).
No final, três print: quantidade (len),
valor (sum) e a mensagem de agradecimento. Capricha
nos emojis 🧾 💰 🎉.
# 🎟 Cinema AI def mostrar_menu(): print("\n🎟 ===== CINEMA AI =====") print("1 - Duna 2 .................. R$25") print("2 - Oppenheimer ............. R$30") print("3 - Barbie .................. R$20") print("0 - Finalizar Compra") ingressos_filmes = [] # nome do filme de cada ingresso ingressos_precos = [] # preço de cada ingresso while True: mostrar_menu() opcao = int(input("\nQual ingresso? ")) if opcao == 1: ingressos_filmes.append("Duna 2"); ingressos_precos.append(25) print("✅ Ingresso de Duna 2 comprado!") elif opcao == 2: ingressos_filmes.append("Oppenheimer"); ingressos_precos.append(30) print("✅ Ingresso de Oppenheimer comprado!") elif opcao == 3: ingressos_filmes.append("Barbie"); ingressos_precos.append(20) print("✅ Ingresso de Barbie comprado!") elif opcao == 0: break else: print("❌ Opção inválida.") # --- nota final --- total_ingressos = len(ingressos_precos) valor_total = sum(ingressos_precos) print(f"\n🧾 Total de ingressos: {total_ingressos}") print(f"💰 Valor total: R${valor_total}") print("🎉 Obrigado por escolher o Cinema AI!")
ingressos_filmes.count("Duna 2") conta as ocorrências.
Aí você imprime tipo: "🎬 Duna 2: 2 ingressos".
Bem-vindo(a) ao fliperama do futuro. Aqui você escolhe um jogo, simula a partida (informa quanto fez), repete quantas vezes quiser e no final o sistema te dá um resumo total com a pontuação somada.
0 - Encerrar. 🎮max). 🥇
Crie ai_arcade.py. A diferença pros desafios anteriores é
que cada partida pede DOIS inputs: primeiro o jogo,
depois a pontuação.
Estrutura: mostrar_menu(), opcao = int(input(...)),
e DENTRO de cada elif você faz outro input pra pegar a
pontuação. Tipo:
# pseudo-código:
elif opcao == 1:
pontos = int(input("..."))
pontuacoes.append(pontos)
No fim: len(pontuacoes) = partidas jogadas,
sum(pontuacoes) = pontuação total.
# 🎮 AI Arcade — sistema de partidas def mostrar_menu(): print("\n🎮 ===== AI ARCADE =====") print("1 - Corrida Espacial 🚀") print("2 - Caça aos Pixels 🕹") print("3 - Batalha de Códigos ⚔") print("0 - Encerrar") def registrar_partida(jogo_nome, emoji): # pede a pontuação e devolve o número (já como int) pontos = int(input(f"{emoji} Sua pontuação em {jogo_nome}: ")) print("✅ Partida registrada!") return pontos pontuacoes = [] jogos = [] while True: mostrar_menu() opcao = int(input("\nQual jogo? ")) if opcao == 1: pontuacoes.append(registrar_partida("Corrida Espacial", "🚀")) jogos.append("Corrida Espacial") elif opcao == 2: pontuacoes.append(registrar_partida("Caça aos Pixels", "🕹")) jogos.append("Caça aos Pixels") elif opcao == 3: pontuacoes.append(registrar_partida("Batalha de Códigos", "⚔")) jogos.append("Batalha de Códigos") elif opcao == 0: break else: print("❌ Opção inválida.") # --- resumo --- if len(pontuacoes) == 0: print("\n🤷 Nenhuma partida jogada.") else: print(f"\n🎮 Partidas jogadas: {len(pontuacoes)}") print(f"🔢 Pontuação total: {sum(pontuacoes)}") print(f"🥇 Maior pontuação: {max(pontuacoes)}") print("🏆 Parabéns, dev gamer!")
registrar_partida
recebe o nome e o emoji do jogo, faz o input e devolve a pontuação.
Isso evita 3 cópias do mesmo int(input(...)) + print.
Cap 05 dando frutos! 🌱
Última parada: a Academia AI. O aluno entra na recepção, escolhe quais atividades vai fazer hoje (cada uma com tempo fixo) e ao final o app soma quantas atividades e quantos minutos de treino — pra ele saber quando ir embora 😅.
0 - Finalizar treino. 🏋️while True coleta as atividades. 🔁mostrar_menu(), padrão dos outros desafios. 🧩
Crie academia_ai.py. Esse é o mais simples
de todos — é exatamente o esqueleto da Lanchonete (desafio 2),
só que com "minutos" em vez de "preço".
Função mostrar_menu() com as 4 atividades.
Lista tempos = []. while True: opção 1
append(30), opção 2 append(25),
opção 3 append(40), opção 4 append(15),
opção 0 break.
Final: len(tempos) = quantidade de atividades,
sum(tempos) = tempo total. Três print
com emoji e pronto!
# 🏋️ Academia AI Fitness def mostrar_menu(): print("\n🏋️ ===== ACADEMIA AI FITNESS =====") print("1 - Corrida na esteira ....... 30 min") print("2 - Bicicleta ergométrica .... 25 min") print("3 - Musculação ............... 40 min") print("4 - Alongamento .............. 15 min") print("0 - Finalizar treino") atividades = [] tempos = [] while True: mostrar_menu() opcao = int(input("\nQual atividade? ")) if opcao == 1: atividades.append("Corrida na esteira"); tempos.append(30) print("✅ Corrida na esteira adicionada (30 min)") elif opcao == 2: atividades.append("Bicicleta ergométrica"); tempos.append(25) print("✅ Bicicleta ergométrica adicionada (25 min)") elif opcao == 3: atividades.append("Musculação"); tempos.append(40) print("✅ Musculação adicionada (40 min)") elif opcao == 4: atividades.append("Alongamento"); tempos.append(15) print("✅ Alongamento adicionado (15 min)") elif opcao == 0: break else: print("❌ Opção inválida.") # --- resumo do treino --- qtd_atividades = len(atividades) tempo_total = sum(tempos) print(f"\n🧾 {qtd_atividades} atividades") print(f"⏱ Tempo total: {tempo_total} minutos") print("🔥 Parabéns pelo esforço!")
menu → while True → if/elif/break → resumo. Mude o cenário
e os números, e você tem: caixa de mercado, controle de estoque,
kanban pessoal, app de hábitos, contador de calorias…
Você acabou de aprender um padrão que vale por 100 programas.
Quase todo mundo já passou por isso: roda o código, escolhe a opção
0… e nada acontece. O menu volta. Você digita 0 de novo.
O menu volta. Você fica tentando matar o programa com Ctrl+C.
BugZilla feliz da vida.
A causa quase sempre é uma das três abaixo. Bora ver?
break no elif opcao == 0 —
o menu fecha o ciclo, mas nada manda sair do while.
Resultado: roda pra sempre.
int() no input e tá comparando
string com número: opcao == 0 nunca é verdade quando
opcao é "0" (com aspas).
"0" não é 0.
= em vez de == —
= atribui valor, == compara. Em
if/elif você SEMPRE quer ==.
Lembra do print("Olá, mundo!") do primeiro capítulo? De lá
pra cá foram só 5 capítulos — e você já constrói:
Você entrou nesse bootcamp sem saber o que era print().
Hoje você roda 5 sistemas que recebem dados, decidem o que fazer,
repetem ações, guardam histórico e geram relatório.
É exatamente isso que um app de verdade faz — só que
com um pouquinho mais de polimento. O coração já tá batendo.