Criando um Quiz Interativo no Terminal com Python

Tempo de leitura: 6 minutos

Se você quer Criando um Quiz Interativo no Terminal com Python de forma simples e divertida, este guia passo a passo vai te mostrar como montar um jogo de perguntas e respostas que roda direto no console, sem precisar de interfaces gráficas. Você aprenderá a usar entrada de dados com input(), organizar perguntas em dicionários, e aplicar funções para manter o código limpo e reutilizável.

Por que criar um quiz no terminal?

Um quiz no terminal é ideal para quem está começando a programar porque foca nos conceitos essenciais: laços, estruturas de dados e tratamento de entrada do usuário. Além disso, ele funciona em qualquer sistema operacional, não exige dependências gráficas e permite praticar laços while e laços for de maneira prática. O resultado é um programa leve, rápido e fácil de distribuir.

Preparando o ambiente de desenvolvimento

Antes de escrever código, certifique‑se de ter o Python instalado (versão 3.8 ou superior). Você pode baixar o instalador oficial em python.org. Em seguida, crie um diretório para o projeto e abra um terminal:

  1. mkdir quiz_terminal
  2. cd quiz_terminal
  3. python -m venv venv  # cria um ambiente virtual
  4. source venv/bin/activate  # ativa o ambiente (Windows: venv\Scripts\activate)

Manter o código dentro de um ambiente virtual evita conflitos de dependências.

Estrutura básica do quiz

Um quiz simples pode ser dividido em três partes: (1) carregamento das perguntas, (2) loop de interação com o usuário e (3) cálculo da pontuação. Vamos começar criando um arquivo quiz.py com a seguinte estrutura:

  • dados: lista de dicionários contendo pergunta, opções e resposta_correta.
  • funções: exibir_pergunta(), obter_resposta() e calcular_pontuacao().
  • main: laço que percorre todas as questões.

Definindo as perguntas

Use listas para armazenar cada questão como um dicionário. Exemplo:

Python
perguntas = [
{"texto": "Qual a capital da França?", "opcoes": ["Paris", "Londres", "Berlim"], "correta": "A"},
{"texto": "2 + 2 = ?", "opcoes": ["3", "4", "5"], "correta": "B"},
]

Essa estrutura permite expandir facilmente o número de questões ou mudar o formato.

Gerenciando perguntas e respostas

Para exibir cada pergunta, percorra a lista com um loop enumerate. O enumerate fornece o índice da questão, útil para mostrar “Pergunta 1 de 10”.

Função exibir_pergunta

A função recebe um dicionário e imprime a pergunta formatada. Use f‑strings para inserir variáveis diretamente na string:

Python
def exibir_pergunta(idx, q):
  print(f"Pergunta {idx + 1}: {q['texto']}")
  for i, opt in enumerate(q['opcoes'], start=65): # 65 = 'A'
    print(f"{chr(i)}) {opt}")

Função obter_resposta

Capture a escolha do usuário com input(). Valide a entrada para aceitar apenas “A”, “B” ou “C”. Caso o usuário digite algo inválido, mostre uma mensagem de erro e solicite novamente.

Adicionando pontuação e feedback

Crie uma variável pontos iniciada em zero. Cada resposta correta soma um ponto; respostas erradas podem subtrair ou simplesmente não alterar a pontuação. Após cada pergunta, informe ao usuário se ele acertou e mostre a resposta correta.

Função calcular_pontuacao

Esta função recebe a resposta do usuário e a letra correta, compara e retorna 1 ou 0. Também pode exibir uma explicação opcional, armazenada no dicionário da questão.

Melhorando a experiência com argparse

Para tornar o quiz mais flexível, use o módulo argparse. Ele permite que o usuário escolha, ao iniciar o programa, o nível de dificuldade, o número de perguntas ou até mesmo um arquivo externo contendo as questões.

Exemplo de parser

Python
import argparse

parser = argparse.ArgumentParser(description="Quiz interativo no terminal")
parser.add_argument("-n", "--num", type=int, default=5, help="Número de perguntas a serem feitas")
parser.add_argument("-d", "--dificuldade", choices=["facil","medio","dificil"], default="facil", help="Define a dificuldade do quiz")
args = parser.parse_args()

Com esses argumentos, o programa pode selecionar aleatoriamente args.num questões de acordo com a dificuldade escolhida.

Organizando o código em módulos

Conforme o projeto cresce, separar a lógica em arquivos diferentes facilita a manutenção. Crie, por exemplo, perguntas.py contendo a lista de questões, utils.py com funções auxiliares e mantenha o main em quiz.py. Essa prática segue o princípio da modularização e permite reutilizar código em outros projetos.

Tipagem estática com type hints

Adicionar type hints melhora a legibilidade e ajuda ferramentas como mypy a detectar erros antes da execução. Exemplo:

Python
def exibir_pergunta(idx: int, q: dict) -> None:

Embora opcional, a tipagem é recomendada em projetos maiores.

Usando *args* e **kwargs** para flexibilidade

Se você pretende criar diferentes tipos de quizzes (matemática, história, ciência), pode usar *args* e **kwargs nas funções que recebem parâmetros variáveis, como a lista de questões ou o número de tentativas.

Exemplo rápido

Python
def iniciar_quiz(*questoes: dict, **opcoes) -> None:
  # questoes vem como tupla, opcoes como dicionário
  pass

Testando e depurando o quiz

Teste cada função isoladamente usando testes unitários. Crie um arquivo test_quiz.py e utilize o módulo unittest para garantir que obter_resposta() aceita apenas valores válidos e que calcular_pontuacao() retorna o valor esperado.

Para depurar, insira print() estratégicos ou use o depurador integrado do VS Code (F5). Isso ajuda a identificar rapidamente onde a lógica pode estar falhando.

Distribuindo o quiz

Quando o programa estiver pronto, você pode empacotá‑lo como um executável usando PyInstaller ou simplesmente compartilhar o script quiz.py. Usuários que não têm Python instalado podem rodar o executável gerado em qualquer máquina.

Perguntas Frequentes

Como armazenar as perguntas em um arquivo externo?

Use formatos simples como JSON ou TOML. O módulo json lê o arquivo e converte em lista de dicionários, facilitando a manutenção.

É possível adicionar um temporizador para cada pergunta?

Sim. O módulo threading ou a função signal.alarm() (Linux) permitem limitar o tempo de resposta.

Como lidar com respostas que aceitam mais de uma letra (ex.: A ou B)?

Armazene as respostas corretas como lista, por exemplo ["A", "B"], e verifique se a escolha do usuário está contida nessa lista.

Posso usar cores no terminal para melhorar a visualização?

Sim. Bibliotecas como colorama ou rich permitem imprimir texto colorido e formatado.

Qual a melhor forma de validar a entrada do usuário?

Utilize um loop while que repete até receber um valor dentro do conjunto permitido (ex.: {“A”,”B”,”C”}).

Como tornar o quiz acessível para pessoas com deficiência visual?

Forneça opções de áudio usando a biblioteca pyttsx3 ou permita que o usuário escolha entre texto e voz.

É possível salvar o histórico de pontuações?

Sim. Grave os resultados em um arquivo CSV ou SQLite e exiba um ranking ao final.

Como integrar o quiz a um bot de Discord?

Use a biblioteca discord.py para criar comandos que enviam perguntas e recebem respostas via chat.

Qual a diferença entre usar input() e sys.stdin.readline()?

input() já remove o caractere de nova linha e converte para string, enquanto sys.stdin.readline() devolve a linha completa, incluindo “\n”. Para a maioria dos quizzes, input() é mais simples.

Pronto! Agora você tem todas as ferramentas para criar, melhorar e distribuir seu próprio quiz interativo no terminal com Python. Experimente adicionar novos recursos, compartilhe com amigos e continue praticando programação.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Projetos
    Foto do Leandro Hirt

    Criando jogos com Pygame para iniciantes

    Aprender como começar a jornada de criando jogos com Pygame para iniciantes é um dos marcos mais empolgantes na vida

    Ler mais

    Tempo de leitura: 10 minutos
    10/02/2026
    Projetos
    Foto do Leandro Hirt

    Chatbot com OpenAI API usando Python

    A inteligência artificial transformou a maneira como interagimos com a tecnologia, e criar o seu próprio Chatbot com OpenAI API

    Ler mais

    Tempo de leitura: 10 minutos
    09/02/2026
    Projetos
    Foto do Leandro Hirt

    Barra de progresso com tqdm no Python

    Se você já ficou na dúvida se um script Python ainda está em execução, a Barra de progresso com tqdm

    Ler mais

    Tempo de leitura: 5 minutos
    08/02/2026
    Projetos
    Foto do Leandro Hirt

    Jogo da Forca em Python para iniciantes

    O Jogo da Forca em Python é uma ótima maneira de praticar lógica de programação, manipulação de strings e controle

    Ler mais

    Tempo de leitura: 6 minutos
    07/02/2026
    Logo do Discord e logo do Python lado a lado com um símbolo de mais entre eles
    Projetos
    Foto do Leandro Hirt

    Como Criar um Bot para Discord com Python

    Criar um bot para Discord usando Python é uma excelente forma de automatizar tarefas, gerenciar servidores e adicionar funcionalidades personalizadas

    Ler mais

    Tempo de leitura: 20 minutos
    10/12/2025
    Foto de um cadeado
    Projetos
    Foto do Leandro Hirt

    Como Criar um Gerador de Senhas no Python

    Aprenda a criar um gerador de senhas completo e seguro em Python. Tutorial passo a passo com código pronto, explicações

    Ler mais

    Tempo de leitura: 16 minutos
    09/12/2025