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

Atualizado em: 10/03/2026
Tempo de leitura: 6 minutos
Jogo de adivinhação de números desenvolvido com Python

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

    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