Olá, Apollo. Como vai?
Mais uma vez, excelente iniciativa ao compartilhar o seu código do jogo com a comunidade! O seu script ficou muito bem estruturado e a lógica aplicada é de alto nível.
Um ponto que merece destaque positivo no seu código é a utilização do bloco try-except em conjunto com a instrução raise ValueError. Essa é uma excelente prática de programação, pois garante que o seu jogo não quebre caso o usuário digite uma letra por engano ou insira um número fora do intervalo permitido. Você tornou a aplicação muito mais robusta!
Notei apenas que, no momento de colar o código aqui no fórum, a primeira linha acabou unindo a importação da biblioteca com a declaração da função (import random def numero_aleatorio():). Abaixo, deixo o seu código formatado com a quebra de linha correta para que outros alunos possam copiar e executar sem erros de sintaxe:
import random
def numero_aleatorio():
numero_secreto = random.randint(1, 100)
tentativas = 0
while True:
try:
palpite = int(input('Tente advinhar o numero (1-100): '))
if not 1 <= palpite <= 100:
raise ValueError('Numero fora do intervalo! Digite um numero entre 1 e 100.')
tentativas += 1
if palpite < numero_secreto:
print('Muito baixo! Tente novamente.')
elif palpite > numero_secreto:
print('Muito alto! Tente novamente.')
else:
print(f'Parabens! Voce acerto o numero {numero_secreto} em {tentativas} tentativas.')
break
except ValueError as e:
print(f'Entrada invalida {e}')
numero_aleatorio()
Como sugestão de melhoria e desafio para os seus próximos estudos, você pode implementar um sistema de limite de tentativas. Isso adiciona um nível de dificuldade ao jogo.
Para fazer isso, você pode criar uma variável limite_tentativas e alterar a condição do seu laço while. Veja um exemplo de como essa mecânica pode ser aplicada:
import random
def numero_aleatorio():
numero_secreto = random.randint(1, 100)
tentativas = 0
limite_tentativas = 7
print(f'Você tem {limite_tentativas} tentativas para adivinhar o número secreto!')
while tentativas < limite_tentativas:
try:
palpite = int(input('\nTente adivinhar o número (1-100): '))
if not 1 <= palpite <= 100:
raise ValueError('Número fora do intervalo! Digite um número entre 1 e 100.')
tentativas += 1
if palpite < numero_secreto:
print('Muito baixo! Tente novamente.')
elif palpite > numero_secreto:
print('Muito alto! Tente novamente.')
else:
print(f'Parabéns! Você acertou o número {numero_secreto} em {tentativas} tentativas.')
return
except ValueError as e:
print(f'Entrada inválida: {e}')
print(f'\nFim de jogo! Suas tentativas acabaram. O número secreto era {numero_secreto}.')
numero_aleatorio()
Dessa forma, o jogador precisa usar a lógica e pensar estrategicamente, dividindo o intervalo a cada palpite para não esgotar as suas chances.
Espero que possa ter lhe ajudado!