Programa AI  ·  Bootcamp de Programação

./desafio_fim_de_semana.py

Três desafios para praticar o que você aprendeu — variáveis, condicionais, loops e listas. Tente resolver antes de ver o gabarito!

Python 3 3 desafios + gabarito 3 desafios bônus Prof. Kelson Almeida
📝

Desafios

Resolva os três desafios abaixo. Crie um arquivo .py separado para cada um.

01

🎯 Cadastro do Usuário

desafio1_cadastro.py
  • 1Peça ao usuário: nome, idade e cidade.
  • 2Mostre uma mensagem de boas-vindas com as três informações usando f-string.
  • 3Se a idade for menor que 18, exiba: "Você é menor de idade."
  • 4Se a idade for 18 ou mais, exiba: "Você é maior de idade."
  • 5Se a cidade for "João Pessoa", adicione também: "Arretado(a)! Terra boa!"
saída esperada
Qual o seu nome? Ana
Quantos anos você tem? 17
De qual cidade você é? João Pessoa
Olá, Ana! Você tem 17 anos e é de João Pessoa.
Você é menor de idade.
Arretado(a)! Terra boa!
🐛 Use int() para converter a idade — input() sempre retorna texto!
🐛 Use == (dois iguais) para comparar, nunca = (um igual).
02

🔁 Contador de Senhas

desafio2_senha.py
  • 1Defina uma senha fixa dentro do código (ex: "python123").
  • 2Use um loop while para dar ao usuário exatamente 3 tentativas.
  • 3A cada tentativa errada, informe quantas chances restam.
  • 4Se acertar: exiba "Acesso liberado! Bem-vindo!" e encerre o loop.
  • 5Se errar as 3 vezes: exiba "Acesso bloqueado. Tente mais tarde."
saída esperada
Digite a senha: abc
Senha incorreta. Você tem 2 tentativa(s) restante(s).
Digite a senha: 1234
Senha incorreta. Você tem 1 tentativa(s) restante(s).
Digite a senha: python123
Acesso liberado! Bem-vindo! 🎉
🐛 Use uma variável contadora (ex: tentativas = 0) e some 1 a cada erro.
🐛 Use break para sair do loop quando acertar.
03

📋 Lista de Tarefas

desafio3_tarefas.py
  • 1Comece com uma lista vazia: tarefas = []
  • 2Exiba um menu: [1] Adicionar tarefa   [2] Ver tarefas   [0] Sair
  • 3Use while para manter o menu rodando até o usuário digitar 0.
  • 4Opção 1: peça o nome da tarefa e adicione com append().
  • 5Opção 2: use for para mostrar todas numeradas. Se vazia, avise.
  • 6Ao sair: exiba o total de tarefas adicionadas.
saída esperada
=== Menu de Tarefas ===
[1] Adicionar tarefa
[2] Ver tarefas
[0] Sair
Escolha: 1
Nome da tarefa: Estudar Python
Tarefa adicionada!
Escolha: 2
--- Suas tarefas ---
1. Estudar Python
Escolha: 0
Você tem 1 tarefa(s). Até logo!
🐛 Para listar numerado: use for i in range(len(tarefas)) e acesse tarefas[i].
🐛 Verifique lista vazia com: if len(tarefas) == 0.

Gabarito

Só olhe depois de ter tentado! Entender o erro é parte do aprendizado.

⚠️  Tente resolver primeiro. Errar faz parte — o importante é entender o que deu errado.
01

✅ Desafio 1 — Cadastro do Usuário

desafio1_cadastro.py
PYTHON
# desafio1_cadastro.py

nome   = input("Qual o seu nome? ")
idade  = int(input("Quantos anos você tem? "))
cidade = input("De qual cidade você é? ")

print(f"Olá, {nome}! Você tem {idade} anos e é de {cidade}.")

if idade < 18:
    print("Você é menor de idade.")
else:
    print("Você é maior de idade.")

if cidade == "João Pessoa":
    print("Arretado(a)! Terra boa!")

// ENTENDENDO O GABARITO

  • int() converte o texto do input para número, permitindo comparar com 18.
  • O if cidade é independente do if de idade — os dois sempre rodam.
  • A f-string junta todas as variáveis em uma linha com {nome}, {idade} e {cidade}.
02

✅ Desafio 2 — Contador de Senhas

desafio2_senha.py
PYTHON
# desafio2_senha.py

senha_correta = "python123"
tentativas    = 0

while tentativas < 3:
    digitada = input("Digite a senha: ")
    if digitada == senha_correta:
        print("Acesso liberado! Bem-vindo!")
        break
    else:
        tentativas = tentativas + 1
        restantes  = 3 - tentativas
        if restantes > 0:
            print(f"Senha incorreta. Você tem {restantes} tentativa(s) restante(s).")

if tentativas == 3:
    print("Acesso bloqueado. Tente mais tarde.")

// ENTENDENDO O GABARITO

  • tentativas começa em 0 e sobe 1 a cada erro — quando chega a 3, o while para.
  • break sai imediatamente do loop quando a senha está correta.
  • O if tentativas == 3 depois do while só executa se o usuário nunca usou o break.
03

✅ Desafio 3 — Lista de Tarefas

desafio3_tarefas.py
PYTHON
# desafio3_tarefas.py

tarefas = []
opcao   = ""

while opcao != "0":
    print("")
    print("=== Menu de Tarefas ===")
    print("[1] Adicionar tarefa")
    print("[2] Ver tarefas")
    print("[0] Sair")
    opcao = input("Escolha: ")

    if opcao == "1":
        nome_tarefa = input("Nome da tarefa: ")
        tarefas.append(nome_tarefa)
        print("Tarefa adicionada!")

    elif opcao == "2":
        if len(tarefas) == 0:
            print("Nenhuma tarefa cadastrada ainda.")
        else:
            print("--- Suas tarefas ---")
            for i in range(len(tarefas)):
                print(f"{i + 1}. {tarefas[i]}")

print(f"Você tem {len(tarefas)} tarefa(s). Até logo!")

// ENTENDENDO O GABARITO

  • opcao começa como "" para o while entrar na primeira vez.
  • Comparamos com strings ("1", "2", "0") porque input() sempre retorna texto.
  • range(len(tarefas)) gera índices de 0 até o fim. Somamos 1 ao exibir para começar em 1.
  • O print final fica fora do while — só executa quando o usuário sai.
🔥

Desafios Bônus

Quem terminou os três primeiros faz esses. Mesma sintaxe, lógica mais elaborada.

🏆

Nível: Quem fez os anteriores faz esse!

Só pode usar o que foi visto até o slide 69 — variáveis, if/elif/else, while, for, listas.

🧙 Bônus 1 — Ficha de Jogador RPG

bonus1_rpg.py

Você vai criar a ficha de personagem de um jogo de RPG. O sistema avalia classe e poder com base nos atributos.

  • 1Peça: nome do personagem, nível (inteiro) e tipo de arma (espada, arco ou cajado).
  • 2Defina a classe pela arma: espada → Guerreiro · arco → Arqueiro · cajado → Mago · qualquer outro → Aventureiro.
  • 3Defina o poder pelo nível: < 5 → Iniciante · 5 a 9 → Veterano · ≥ 10 → Lendário.
  • 4Exiba a ficha com: nome, nível, classe e poder.
saída esperada
Nome do personagem: Arthas
Nível: 12
Tipo de arma (espada/arco/cajado): espada
=== Ficha do Personagem ===
Nome: Arthas
Nível: 12
Classe: Guerreiro
Poder: Lendário ⚔️
💡 Use if/elif/else para a arma e outro bloco if/elif/else para o nível — são verificações independentes.
💡 Guarde a classe e o poder em variáveis antes de exibir.

🛒 Bônus 2 — Caixa Registradora

bonus2_caixa.py

Simule uma caixa registradora. O usuário adiciona produtos, vê o total e finaliza com desconto automático.

  • 1Comece com total = 0.0 e uma lista vazia de produtos.
  • 2Menu: [1] Adicionar produto · [2] Ver carrinho · [0] Finalizar
  • 3Opção 1: peça nome e preço. Adicione o nome à lista e some o preço ao total.
  • 4Opção 2: mostre todos os produtos com for e o total parcial.
  • 5Ao finalizar: total > 200 → 10% de desconto · entre 100 e 200 → 5% · senão → sem desconto.
  • 6Exiba: total original, percentual e valor final.
saída esperada
Escolha: 1
Nome do produto: Teclado
Preço: 150
Produto adicionado!
Escolha: 0
--- Resumo ---
Total original: R$ 150.00
Desconto: 5%
Total a pagar: R$ 142.50
💡 Use float() para o preço — pode ter centavos.
💡 Para duas casas decimais: f"{total:.2f}"

🧠 Bônus 3 — Quiz Interativo

bonus3_quiz.py

Crie um quiz de 3 perguntas sobre Python. O sistema pontua e dá um título ao jogador no final.

  • 1Crie 3 perguntas com suas respostas corretas (variáveis no início do código).
  • 2Para cada pergunta: mostre o texto, peça a resposta e compare.
  • 3Some 1 ponto a cada acerto e informe na hora ("Correto!" ou "Errado!").
  • 4No final, mostre quantos acertos (ex: "Você acertou 2 de 3").
  • 5Título: 3 → Mestre Python · 2 → Dev Dedicado · 1 → Padawan · 0 → Continue Estudando!
saída esperada
=== Quiz Python ===
Pergunta 1: Qual função exibe algo na tela?
Resposta: print
Correto! ✅
Pergunta 2: Qual palavra usamos para repetição condicional?
Resposta: for
Errado! A resposta era: while ❌
Você acertou 1 de 2!
Título: Padawan 🌱
💡 Guarde as respostas corretas em variáveis: resposta1 = "print"
💡 Use if/elif/else no final para definir o título com base nos pontos.