1
resposta

Jogo de adivinhar o número

import random


class JogoNumeroSecreto:
    """
    Representa um jogo de adivinhação de números

    A classe gerencia a lógica de um jogo onde o usuário tenta adivinhar
    um número secreto gerado aleatoriamente dentro de um intervalo definido,
    com um limite de tentativas.

    Atributos:
        numero_maximo (int): O limite superior para o número secreto (padrão 100)
        tentativas_restantes (int): Quantidade de chances que o jogodor possui
    """

    def __init__(self, numero_maximo: int = 100, tentativas: int = 5) -> None:
        self.numero_maximo = numero_maximo
        self.tentativas_restantes = tentativas

    def _gerar_numero_secreto(self) -> int:
        return random.randint(1, self.numero_maximo)

    def _obter_palpite(self, entrada: str) -> int:
        try:
            palpite = int(entrada)
        except ValueError:
            raise ValueError('Entrada inválida: Você deve enviar apenas número inteiro.')
        if palpite < 1 or palpite > self.numero_maximo:
            raise ValueError(
                f'Entrada inválida: Número fora do intervalo! Digite um número entre 1 e {self.numero_maximo}.')
        return palpite

    def rodar_jogo(self):
        numero_secreto = self._gerar_numero_secreto()
        print(f'--- NÚMERO SECRETO (1-{self.numero_maximo}) ---')

        while self.tentativas_restantes > 0:
            print(f'Tentativas: {self.tentativas_restantes}')
            resposta = input(f'Tente adivinhar o número secreto (1-{self.numero_maximo}): ')

            try:
                palpite = self._obter_palpite(resposta)
            except ValueError as e:
                print(e)
                continue

            if palpite == numero_secreto:
                print(f'Parabéns! Você acertou o número secreto.')
                break

            self.tentativas_restantes -= 1
            dica = 'Muito baixo!' if palpite < numero_secreto else 'Muito alto!'
            if self.tentativas_restantes > 0:
                print(f'{dica} Tente novamente.')
            else:
                print(f'Que pena! Suas tentativas acabaram. O número era {numero_secreto}.')

        print(f'FIM DO JOGO!')


if __name__ == '__main__':
    j1 = JogoNumeroSecreto(100, 10)
    j1.rodar_jogo()
1 resposta

Oi, José! Como vai?

Agradeço por compartilhar.

Eu gostei gostei muito da sua organização do código em classe e métodos, bem importante para deixar o projeto mais legível e alinhado com boas práticas de Python.

Do jeito que você explicou e estruturou, fica claro o cuidado com validação de entrada e controle das tentativas, o que conecta bem com a proposta do projeto.

Continue explorando esse tipo de estrutura, isso fortalece muito sua base como desenvolvedor.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!