Criando um Quiz Interativo no Terminal com Python

Publicado em: 07/02/2026
Tempo de leitura: 6 minutos
Quiz interativo no terminal desenvolvido com Python

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

    Landing page simples criada com Python e Tailwind CSS
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Como criar uma landing page simples com Python e Tailwind CSS

    Você já sentiu a necessidade de colocar uma ideia no ar rapidamente, mas se viu travado na complexidade do desenvolvimento

    Ler mais

    Tempo de leitura: 11 minutos
    19/04/2026
    Sistema de tradução automática desenvolvido com Python
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Como criar um sistema de tradução automática com Python

    Criar um sistema de tradução automática com Python é uma das formas mais fascinantes de entrar no mundo da Inteligência

    Ler mais

    Tempo de leitura: 10 minutos
    17/04/2026
    Sistema de lembretes e alarmes desenvolvido com Python
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Como criar um sistema de lembretes com alarme em Python

    Criar um sistema de lembretes com alarme em Python é um dos projetos mais gratificantes para quem está dando os

    Ler mais

    Tempo de leitura: 10 minutos
    10/04/2026
    Extração de dados de tabelas de sites usando Python e pandas
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Como extrair dados de tabelas em sites com Python e Pandas

    Você já se deparou com um site repleto de informações úteis organizadas em tabelas, mas sentiu que copiar e colar

    Ler mais

    Tempo de leitura: 10 minutos
    09/04/2026
    Conversão de áudio para texto usando Python gratuitamente
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Como converter áudio em texto com Python de forma gratuita

    Transformar arquivos de áudio em texto é uma das tarefas mais úteis e requisitadas na era da inteligência artificial e

    Ler mais

    Tempo de leitura: 10 minutos
    08/04/2026
    Sistema de login simples desenvolvido com Python
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Como criar um sistema de login simples com Python e TXT

    Aprender a manipular informações externas é um dos grandes marcos na jornada de qualquer programador. Se você está dando seus

    Ler mais

    Tempo de leitura: 10 minutos
    07/04/2026