Pular para o conteúdo

Descubra seu nível em Python

10 perguntas rápidas para descobrir seu nível em Python e identificar exatamente onde você tem gaps. Sem cadastro, resultado na hora.

Não quer fazer o quiz agora?

Pule direto para a criação do seu curso personalizado de Python.

  • Conteúdo adaptado ao seu nível
  • Atividades curtas e práticas
  • Progresso salvo automaticamente
Criar meu curso

Como o quiz funciona

São 10 perguntas de múltipla escolha cobrindo diferentes áreas de Python. A cada resposta você recebe um feedback imediato com a explicação — mesmo quando erra, você já aprende algo novo.

No final, calculamos seu nível (iniciante, intermediário ou avançado) com base no percentual de acertos e identificamos as categorias onde você mais errou. Esse diagnóstico vira um prompt pronto para gerar um curso sob medida para preencher justamente essas lacunas.

Por que vale a pena

Estudar sem saber por onde começar é o principal motivo que faz gente desistir. Em vez de seguir uma trilha genérica, você descobre exatamente o que já sabe e onde estão seus gaps — e monta um curso focado no que falta.

O quiz é gratuito, anônimo e funciona sem login. Seus últimos 5 resultados ficam salvos no seu navegador para você acompanhar a evolução ao longo do tempo.

Como interpretamos os níveis

  • Iniciante — menos de 40% de acertos. Você está começando em Python ou precisa revisar os fundamentos. Nada de vergonha: a melhor hora para começar bem é agora.
  • Intermediário — entre 40% e 70%. Você já tem uma base sólida, mas existem conceitos-chave que ainda precisam ser consolidados na prática.
  • Avançado — acima de 70%. Você domina o essencial. Vale aprofundar em tópicos mais complexos ou em aplicações específicas de Python.

Perguntas do quiz (com gabarito e explicação)

Prefere só ler as perguntas e respostas? Abaixo estão as 10 questões do quiz com a alternativa correta e a explicação de cada uma. Se quiser testar seu conhecimento sem olhar antes, volte para o quiz no topo da página.

  1. 1. Fundamentos iniciante

    Qual é o tipo do valor retornado por `type("Olá")`?

    • A. str ✓ correta
    • B. string
    • C. char
    • D. text

    Por quê: Em Python, sequências de caracteres são do tipo `str`. Ao contrário de outras linguagens, não existe o tipo `char` — um único caractere também é uma `str` de tamanho 1.

  2. 2. Fundamentos iniciante

    Qual das opções abaixo retorna diretamente a parte inteira da divisão em Python?

    • A. /
    • B. // ✓ correta
    • C. %
    • D. int()

    Por quê: O operador `//` faz divisão inteira (floor division) em um passo só — `7 // 2` retorna `3`. `int(7 / 2)` até chega no mesmo valor para positivos, mas trunca em vez de arredondar pra baixo (difere com negativos). `/` sempre retorna float e `%` retorna o resto da divisão.

  3. 3. Fluxo de Controle iniciante

    Quantas vezes o corpo do loop executa em `for i in range(5):`?

    • A. 4 vezes
    • B. 5 vezes ✓ correta
    • C. 6 vezes
    • D. Depende do valor inicial

    Por quê: `range(5)` gera a sequência 0, 1, 2, 3, 4 — cinco valores. O parâmetro é o limite superior exclusivo, por isso o último valor é sempre `n - 1`.

  4. 4. Fluxo de Controle intermediario

    Quando o bloco `else` de um loop `for` é executado?

    • A. Sempre que o loop termina
    • B. Apenas quando o loop não executa nenhuma iteração
    • C. Apenas quando o loop termina sem usar `break` ✓ correta
    • D. Nunca — `for` não aceita `else`

    Por quê: O `else` em loops Python executa quando a iteração termina naturalmente, sem um `break`. É útil para buscas: se saiu pelo `break`, achou; se entrou no `else`, não achou.

  5. 5. Estruturas de Dados intermediario

    Qual expressão cria a lista `[0, 1, 4, 9, 16]`?

    • A. [i * i for i in range(5)] ✓ correta
    • B. [i ** i for i in range(5)]
    • C. [i * 2 for i in range(5)]
    • D. (i * i for i in range(5))

    Por quê: A primeira é uma list comprehension que eleva cada número ao quadrado (`i * i`). `i ** i` é potenciação com o próprio índice e gera `[1, 1, 4, 27, 256]`. A última, com parênteses, cria um generator (preguiçoso), não uma lista.

  6. 6. Estruturas de Dados iniciante

    Qual destas estruturas é imutável em Python?

    • A. list
    • B. dict
    • C. tuple ✓ correta
    • D. set

    Por quê: Tuplas são imutáveis — não dá para adicionar, remover ou alterar elementos depois de criadas. Listas, dicts e sets são mutáveis. Essa diferença importa em performance e em uso como chave de dicionário.

  7. 7. Funções avancado

    Qual o problema com `def f(x, items=[]): items.append(x); return items`?

    • A. Não é válido em Python
    • B. A lista padrão é compartilhada entre todas as chamadas ✓ correta
    • C. Python lança erro na segunda chamada
    • D. Nenhum — é um padrão recomendado

    Por quê: Argumentos padrão mutáveis são avaliados uma única vez, na definição. A mesma lista é reutilizada entre chamadas, acumulando valores. O padrão correto é usar `items=None` e criar a lista dentro da função.

  8. 8. Funções intermediario

    Como ordenar uma lista de tuplas pelo segundo elemento?

    • A. sorted(lista, key=lambda t: t[1]) ✓ correta
    • B. sorted(lista, 1)
    • C. sorted(lista, second=True)
    • D. lista.sort(index=1)

    Por quê: A forma idiomática é passar uma função `key` que extrai o critério de ordenação. Lambdas são perfeitas para isso. Também funciona `operator.itemgetter(1)`, que costuma ser ligeiramente mais rápido.

  9. 9. OOP iniciante

    O que representa o parâmetro `self` em um método de classe?

    • A. Uma palavra reservada da linguagem
    • B. A instância da classe que chamou o método ✓ correta
    • C. A classe em si, equivalente a `cls`
    • D. Um placeholder obrigatório sem função real

    Por quê: `self` é apenas um nome convencional para o primeiro parâmetro de métodos de instância — ele recebe a instância que invocou o método. Não é palavra reservada; você pode usar outro nome, mas ninguém faz isso.

  10. 10. OOP intermediario

    O que faz o decorator `@staticmethod`?

    • A. Impede que o método seja sobrescrito em subclasses
    • B. Marca um método que não recebe `self` nem `cls` ✓ correta
    • C. Torna o método acessível sem instanciar a classe, passando `cls`
    • D. Cacheia o retorno do método

    Por quê: `@staticmethod` define um método que não recebe nem a instância (`self`) nem a classe (`cls`). É útil para agrupar funções auxiliares relacionadas à classe, mas que não dependem do estado dela. Quem recebe `cls` é o `@classmethod`.

Perguntas frequentes

Quantas perguntas o quiz tem?

São 10 perguntas de múltipla escolha cobrindo fundamentos, fluxo de controle, estruturas de dados, funções e programação orientada a objetos em Python.

Preciso criar conta para fazer o quiz?

Não. O quiz é totalmente gratuito e funciona sem cadastro. Seus últimos 5 resultados ficam salvos no seu navegador para acompanhar sua evolução.

Como vocês determinam meu nível?

Calculamos o percentual de acertos: menos de 40% é iniciante, entre 40% e 70% é intermediário, e acima de 70% é avançado. Também mostramos em quais categorias você mais errou.

O que acontece depois do quiz?

Você pode gerar um curso personalizado de Python com um clique. O curso é montado com base no seu nível e nas categorias onde você teve mais dificuldade.

O quiz serve para avaliar para uma vaga?

Não. É uma ferramenta de autoavaliação para quem está aprendendo. Não é um teste oficial e não vale como certificação.

Pronto para ir além do quiz?

Transforme seu diagnóstico em um curso personalizado de Python, no seu ritmo.

  • Adaptado ao seu nível atual
  • Feito em menos de 1 minuto
  • Exercícios práticos e feedback imediato
Criar meu curso