Programador Leigo
Projetos 8 min leitura 16 MAR 2026

Como criar um quiz interativo em Python

Monte um quiz de perguntas e respostas no terminal com pontuação, usando listas e dicionários.


O que vamos construir?

Um quiz de perguntas e respostas que roda no terminal. O programa mostra uma pergunta com alternativas, o jogador escolhe a resposta, e no final recebe sua pontuação. Vamos usar listas e dicionários para organizar as perguntas — conceitos que você aprendeu na trilha Python do Zero.

Estruturando as perguntas

Cada pergunta precisa de: o texto da pergunta, as alternativas e a resposta correta. Um dicionário é perfeito para isso:

pergunta = {
    "texto": "Qual funcao exibe texto na tela em Python?",
    "alternativas": ["input()", "print()", "show()", "display()"],
    "correta": 1  # indice da resposta correta (comeca em 0)
}

Para ter várias perguntas, colocamos os dicionários dentro de uma lista:

perguntas = [
    {
        "texto": "Qual funcao exibe texto na tela em Python?",
        "alternativas": ["input()", "print()", "show()", "display()"],
        "correta": 1
    },
    {
        "texto": "Qual tipo de dado representa texto em Python?",
        "alternativas": ["int", "float", "bool", "str"],
        "correta": 3
    },
    {
        "texto": "O que o operador == faz?",
        "alternativas": ["Atribui valor", "Compara igualdade", "Soma", "Multiplica"],
        "correta": 1
    },
    {
        "texto": "Qual estrutura repete um bloco de codigo?",
        "alternativas": ["if", "def", "while", "import"],
        "correta": 2
    },
    {
        "texto": "Como acessar o primeiro item de uma lista?",
        "alternativas": ["lista[1]", "lista[0]", "lista.first()", "lista[-1]"],
        "correta": 1
    },
]

Mostrando uma pergunta

Vamos criar uma função que exibe a pergunta e suas alternativas:

def mostrar_pergunta(pergunta, numero):
    print(f"\nPergunta {numero}:")
    print(pergunta["texto"])
    print()
    for i, alt in enumerate(pergunta["alternativas"]):
        print(f"  {i + 1}. {alt}")

A função enumerate() retorna o índice e o valor de cada item, facilitando a numeração.

Recebendo a resposta

Precisamos que o jogador escolha um número e verificar se está no intervalo válido:

def pedir_resposta(total_alternativas):
    while True:
        try:
            escolha = int(input("\nSua resposta: "))
            if 1 <= escolha <= total_alternativas:
                return escolha - 1  # converte para indice (base 0)
            print(f"Escolha entre 1 e {total_alternativas}.")
        except ValueError:
            print("Digite apenas o numero da alternativa.")

O while True garante que o programa continue pedindo até receber uma resposta válida.

Montando o jogo completo

Agora juntamos tudo em um loop que percorre todas as perguntas:

def jogar(perguntas):
    pontos = 0
    total = len(perguntas)

    print("=" * 40)
    print("       QUIZ PYTHON")
    print("=" * 40)

    for i, p in enumerate(perguntas, 1):
        mostrar_pergunta(p, i)
        resposta = pedir_resposta(len(p["alternativas"]))

        if resposta == p["correta"]:
            print("Correto!")
            pontos += 1
        else:
            correta = p["alternativas"][p["correta"]]
            print(f"Errado! A resposta era: {correta}")

    print()
    print("=" * 40)
    print(f"  Resultado: {pontos}/{total}")

    porcentagem = int((pontos / total) * 100)
    if porcentagem == 100:
        print("  Perfeito! Voce mandou muito bem!")
    elif porcentagem >= 60:
        print("  Bom trabalho! Continue estudando.")
    else:
        print("  Precisa revisar. Nao desista!")

    print("=" * 40)

Código completo

Aqui está o programa completo, pronto para rodar:

perguntas = [
    {
        "texto": "Qual funcao exibe texto na tela em Python?",
        "alternativas": ["input()", "print()", "show()", "display()"],
        "correta": 1
    },
    {
        "texto": "Qual tipo de dado representa texto em Python?",
        "alternativas": ["int", "float", "bool", "str"],
        "correta": 3
    },
    {
        "texto": "O que o operador == faz?",
        "alternativas": ["Atribui valor", "Compara igualdade", "Soma", "Multiplica"],
        "correta": 1
    },
    {
        "texto": "Qual estrutura repete um bloco de codigo?",
        "alternativas": ["if", "def", "while", "import"],
        "correta": 2
    },
    {
        "texto": "Como acessar o primeiro item de uma lista?",
        "alternativas": ["lista[1]", "lista[0]", "lista.first()", "lista[-1]"],
        "correta": 1
    },
]


def mostrar_pergunta(pergunta, numero):
    print(f"\nPergunta {numero}:")
    print(pergunta["texto"])
    print()
    for i, alt in enumerate(pergunta["alternativas"]):
        print(f"  {i + 1}. {alt}")


def pedir_resposta(total_alternativas):
    while True:
        try:
            escolha = int(input("\nSua resposta: "))
            if 1 <= escolha <= total_alternativas:
                return escolha - 1
            print(f"Escolha entre 1 e {total_alternativas}.")
        except ValueError:
            print("Digite apenas o numero da alternativa.")


def jogar(perguntas):
    pontos = 0
    total = len(perguntas)

    print("=" * 40)
    print("       QUIZ PYTHON")
    print("=" * 40)

    for i, p in enumerate(perguntas, 1):
        mostrar_pergunta(p, i)
        resposta = pedir_resposta(len(p["alternativas"]))

        if resposta == p["correta"]:
            print("Correto!")
            pontos += 1
        else:
            correta = p["alternativas"][p["correta"]]
            print(f"Errado! A resposta era: {correta}")

    print()
    print("=" * 40)
    print(f"  Resultado: {pontos}/{total}")

    porcentagem = int((pontos / total) * 100)
    if porcentagem == 100:
        print("  Perfeito! Voce mandou muito bem!")
    elif porcentagem >= 60:
        print("  Bom trabalho! Continue estudando.")
    else:
        print("  Precisa revisar. Nao desista!")

    print("=" * 40)


jogar(perguntas)

Dicas para ir além

  • Embaralhar perguntas: use random.shuffle(perguntas) para mudar a ordem a cada jogo
  • Mais perguntas: adicione quantas quiser, seguindo o mesmo formato
  • Categorias: agrupe perguntas por tema e deixe o jogador escolher
  • Tempo: use o módulo time para mostrar quanto tempo o jogador levou

Conclusão

Você criou um quiz completo usando listas, dicionários, funções e loops. Esse projeto mostra como estruturas de dados simples resolvem problemas reais. No próximo artigo, vamos construir uma calculadora com menu interativo.

Continue lendo

Compartilhar