1
resposta

Jogo de adivinhar o número

Maria está criando um jogo para seus alunos praticarem lógica e pensamento rápido. Ela quer um programa onde o computador escolhe um número aleatório entre 1 e 100, e o jogador tem que adivinhar qual é.

Além de garantir a jogabilidade, Maria deseja que o programa trate erros de entrada, impedindo que o usuário forneça valores inválidos, como letras ou números fora do intervalo permitido.

Sua tarefa é criar um programa que gere um número aleatório entre 1 e 100 e permita que o usuário tente adivinhar o número. O programa deve informar se o palpite é maior ou menor que o número correto, até que o usuário acerte. Se o usuário digitar um valor inválido ou um número fora do intervalo, uma exceção ValueError deve ser lançada .

Exemplo de entrada:

  • Tente adivinhar o número (1-100): 50

Saída esperada:

  • Parabéns! Você acertou o número 37.

Caso o número esteja abaixo:

  • Muito baixo! Tente novamente: 17

Agora, caso esteja acima:

  • Muito alto! Tente novamente: 75

Em caso de exceção:

  • Entrada inválida: Número fora do intervalo! Digite um número entre 1 e 100.

  • Entrada inválida: invalid literal for int() with base 10: 'abc12

      import random as rd
    
      def adivinhar_numero():
          numero_secreto = rd.randint(1, 100)
          tentativas = 0
          print(f"O número secreto(para o exercício): {numero_secreto}")
          while True:
              try:
                  chute = int(input("Tente adivinhar o número (1-100): "))
    
                  if not 1 <= chute <= 100:
                      raise ValueError("Número fora do intervalo! Digite um número entre 1 e 100.")
    
                  tentativas += 1 # adiciona contagem de tentativas somente quando for resposta válida.
    
                  if chute < numero_secreto:
                      print("Muito baixo! Tente novamente.")
                  elif chute > numero_secreto:
                      print("Muito alto! Tente novamente.")
                  else:
                      print(f"Parabéns! Você acertou o número {numero_secreto} em {tentativas} tentativas.")
                      break
    
              except ValueError as err:
                  print(f"Entrada inválida: {err}")
    
      adivinhar_numero()
    

      O número secreto(para o exercício): 63
      Tente adivinhar o número (1-100): 63
      Parabéns! Você acertou o número 63 em 1 tentativas.
    
      O número secreto(para o exercício): 74
      Tente adivinhar o número (1-100): 50
      Muito baixo! Tente novamente.
      Tente adivinhar o número (1-100): 74
      Parabéns! Você acertou o número 74 em 2 tentativas.
    
      O número secreto(para o exercício): 50
      Tente adivinhar o número (1-100): abc12
      Entrada inválida: invalid literal for int() with base 10: 'abc12'
      Tente adivinhar o número (1-100): 50
      Parabéns! Você acertou o número 50 em 1 tentativas.
    
1 resposta

Oi, Carlos! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Parabéns pelo cuidado com a validação de entradas usando try e except, além da contagem correta de tentativas apenas quando o valor é válido, o que deixa o jogo mais justo e organizado.
Uma dica interessante para o futuro é usar um while True com controle claro de saída para simplificar o fluxo. Veja este exemplo:


import random

numero = random.randint(1, 100)

while True:
    try:
        chute = int(input("Digite um numero entre 1 e 100: "))
        if chute < 1 or chute > 100:
            raise ValueError("Fora do intervalo")
        if chute == numero:
            print("Acertou")
            break
        elif chute < numero:
            print("Muito baixo")
        else:
            print("Muito alto")
    except ValueError:
        print("Entrada invalida")

Esse código gera um número aleatório, compara os palpites e trata entradas inválidas sem encerrar o programa.

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