Jogo de adivinhação de número em Python

Publicado em: 08/02/2026
Tempo de leitura: 6 minutos

O Jogo de adivinhação de número em Python é um clássico projeto para quem está iniciando na programação e quer praticar lógica, estruturas de controle e manipulação de entrada do usuário. Neste artigo você vai aprender, passo a passo, como montar esse jogo, entender cada parte do código e ainda descobrir como melhorar a experiência do jogador.

Como funciona o Jogo de adivinhação de número em Python

O objetivo é simples: o computador escolhe aleatoriamente um número dentro de um intervalo definido (por exemplo, de 1 a 100) e o jogador tenta adivinhar esse número. A cada tentativa, o programa informa se o chute foi maior ou menor que o número secreto, até que o acerto ocorra ou o número máximo de tentativas seja atingido.

Para que tudo isso funcione, precisamos combinar alguns conceitos básicos da linguagem, como variáveis, tipos de dados, estruturas de decisão (if‑elif‑else) e laços de repetição (while).

Estrutura passo a passo do código

Antes de escrever uma única linha, é útil planejar a lógica do jogo. Abaixo, descrevemos os principais blocos que compõem o programa.

  • Importar módulos necessários: usaremos o módulo random para gerar o número aleatório.
  • Definir o intervalo: escolher os limites inferior e superior (ex.: 1 e 100).
  • Gerar o número secreto: random.randint(limite_inferior, limite_superior).
  • Solicitar a primeira tentativa ao usuário usando input.
  • Iniciar o laço de tentativas que se repete enquanto o jogador não acertar e ainda houver tentativas disponíveis.
  • Comparar o chute com o número secreto e dar feedback (maior ou menor).
  • Contabilizar tentativas e encerrar o jogo quando o limite for atingido.
  • Exibir mensagem final indicando vitória ou derrota.

Implementando o laço de tentativa com while

O coração do jogo está no laço que repete as perguntas ao usuário. Utilizamos a estrutura while porque não sabemos quantas vezes o jogador precisará tentar; o loop só termina quando a condição de vitória ou de esgotamento de tentativas for satisfeita.

Um exemplo de fluxo:

  1. Definir tentativas_restantes = 5 (ou outro número).
  2. Enquanto tentativas_restantes > 0 e acertou == False:
    • Solicitar o chute.
    • Converter a entrada para int (número inteiro).
    • Comparar com o número secreto usando if‑elif‑else.
    • Atualizar tentativas_restantes e, se necessário, exibir dica.

Esse padrão garante que o programa seja robusto e fácil de entender, mesmo para quem está aprendendo.

Tratando erros de entrada

Um ponto crítico é garantir que o usuário digite apenas números válidos. Caso ele insira texto ou um número fora do intervalo, o programa deve avisar e solicitar um novo chute sem contar a tentativa como erro.

Para isso, usamos try / except (captura de exceções) e verificamos se o valor está dentro dos limites definidos. Um trecho ilustrativo:

try:
  chute = int(input(“Digite um número entre 1 e 100: “))
except ValueError:
  print(“Por favor, informe apenas números inteiros.”)
else:
  if chute < limite_inferior or chute > limite_superior:
    print(“Número fora do intervalo permitido.”)

Essa abordagem evita que o programa quebre inesperadamente e melhora a experiência do usuário.

Melhorias avançadas

Depois de dominar a versão básica, você pode acrescentar recursos que tornam o jogo mais interativo e didático.

  • Contador de tentativas com enumerate: exibe o número da tentativa atual, facilitando o acompanhamento.
  • Histórico de chutes: armazene cada tentativa em uma lista e mostre ao final.
  • Dicas de proximidade: informe se o chute está “quente” ou “frio” comparando a diferença absoluta.
  • Modo multiplayer: permita que dois jogadores alternem as tentativas, usando for para percorrer as rodadas.
  • Interface gráfica com Tkinter (fora do escopo deste artigo, mas uma ótima prática).

Testando o jogo

Mesmo um projeto simples deve ser testado. Você pode escrever testes unitários que verificam, por exemplo, se a função que gera o número aleatório está dentro do intervalo esperado ou se a lógica de comparação retorna o feedback correto.

Um teste básico poderia ser:

def test_comparacao():
  assert comparar(50, 30) == “maior”
  assert comparar(30, 50) == “menor”
  assert comparar(42, 42) == “acertou”

Executar esses testes ajuda a garantir que alterações futuras não quebrem funcionalidades já consolidadas.

Perguntas Frequentes

Qual módulo devo usar para gerar números aleatórios?

O módulo padrão random contém a função randint, que devolve um inteiro dentro do intervalo especificado.

Como impedir que o usuário digite letras ou símbolos?

Utilize try / except ValueError ao converter a entrada com int(). Caso a conversão falhe, peça ao usuário que tente novamente.

É possível definir um número máximo de tentativas?

Sim. Basta criar uma variável, como tentativas_restantes, e decrementá‑la a cada chute.

Posso mudar o intervalo de números sem alterar o código?

Sim. Defina duas variáveis, limite_inferior e limite_superior, e use‑as tanto na geração do número quanto nas validações.

Como armazenar os chutes feitos pelo jogador?

Crie uma lista vazia (historico = []) e adicione cada chute com historico.append(chute). No final, exiba a lista.

É possível jogar novamente sem reiniciar o script?

Envolva todo o fluxo em uma função e, ao final, pergunte ao usuário se deseja jogar outra partida. Se a resposta for afirmativa, chame a função novamente.

Qual a diferença entre while e for neste contexto?

while repete enquanto uma condição for verdadeira, ideal quando não sabemos quantas tentativas serão necessárias. for itera sobre uma sequência fixa, útil quando o número máximo de tentativas já está definido.

Como melhorar a experiência visual no terminal?

Use a biblioteca tqdm para exibir barras de progresso ou cores ANSI para destacar mensagens.

Devo usar funções para organizar o código?

Sim. Separe a lógica de geração, validação e feedback em funções distintas. Isso facilita a leitura e a manutenção.

Onde encontrar mais projetos para praticar Python?

Visite a página Python para iniciantes – guia completo ou explore repositórios no GitHub que oferecem desafios de programação.

Agora que você conhece todos os detalhes, que tal colocar a mão na massa e criar seu próprio Jogo de adivinhação de número em Python? Compartilhe seu código, experimente as melhorias sugeridas e continue evoluindo como programador!

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Fundamentos
    Foto do Leandro Hirt

    Como rodar seu script Python no Docker em 5 minutos

    A tecnologia de containers revolucionou a forma como desenvolvemos e distribuímos software. Se você já passou pela frustração de um

    Ler mais

    Tempo de leitura: 9 minutos
    04/03/2026
    Fundamentos
    Foto do Leandro Hirt

    Como criar um gerenciador de senhas simples com Python

    A segurança digital tornou-se uma prioridade no cotidiano de qualquer pessoa que navega na internet. Com dezenas de contas e

    Ler mais

    Tempo de leitura: 12 minutos
    01/03/2026
    Fundamentos
    Foto do Leandro Hirt

    Como criar um bot de WhatsApp com Python em minutos

    Você já pensou em como seria prático ter um atendente virtual respondendo seus clientes ou amigos 24 horas por dia?

    Ler mais

    Tempo de leitura: 10 minutos
    01/03/2026
    FundamentosBibliotecas
    Foto do Leandro Hirt

    Descubra como gerar números aleatórios seguros com secrets

    Você já parou para pensar como o seu computador decide qual será o próximo número em um sorteio? No mundo

    Ler mais

    Tempo de leitura: 9 minutos
    27/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Como automatizar postagens no Twitter com Python

    Imagine a possibilidade de manter o seu perfil no Twitter (X) sempre ativo, compartilhando conteúdos relevantes, notícias de última hora

    Ler mais

    Tempo de leitura: 12 minutos
    26/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Como criar um pacote pip instalável em Python passo a passo

    Criar seu próprio pacote Python e disponibilizá-lo para a comunidade através do gerenciador de pacotes pip é um dos marcos

    Ler mais

    Tempo de leitura: 8 minutos
    26/02/2026