Na programação você sempre vai se deparar com duas ou mais opções que resolvem o mesmo problema. Eu gosto de usar o if + continue em loops para deixar bem claro no código que caso uma condição seja verdadeira/falsa nada mais é executado naquela iteração e faço o código pegar o próximo item de iteração.
Com o tempo você também vai perceber que não precisa escrever tanto if/else. Eu uso muito pouco "else", fiz umas alterações no seu código e só deixei um else nesse caso, por ele estar bem associado ao if (Chute Alto/Baixo).
Outra coisa importante é sempre colocar um validador de input de usuário e ter alguma mensagem de alerta para que ele possa entender o que fez de errado.
Por último, você pode gerar números aleatórios com o pacote random.
"""Jogo de Adivinhação"""
import random
def jogo(numero_secreto, chances):
"""
Dado um número secreto e o número de chances, inicializa o jogo.
O jogo finaliza quando o jogador acerta o número secreto ou o número de chances é atingido.
:param numero_secreto: int
:param chances: int
:return:
"""
print("?????????????????????????????????")
print("Bem vindo ao jogo de Adivinhação de número!")
print(f"Voce tem {chances} chances")
print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
for rodada in range(1, chances + 1):
print_sep()
print(f"Tentativa {rodada} de {chances}")
chute = input(f"Digite seu chute entre {NUM_MIN} e {NUM_MAX} (inteiros): ")
print(f"Você digitou: {chute}")
try:
chutou = int(chute)
if chutou < {NUM_MIN} or chutou > {NUM_MAX}:
raise ValueError
except ValueError:
print(
f"[Erro] O chute deve ser um número inteiro entre {NUM_MIN} e {NUM_MAX}, "
f"perdeu uma chance!")
continue
if numero_secreto == chutou:
print_sep()
print("ACERTOU!")
print("Fim do Jogo")
print_sep()
return
if numero_secreto < chutou:
print("Chutou Alto")
else:
print("Chutou Baixo")
print_sep()
print("ACABARAM SUAS CHANCES, FIM DO JOGO")
print(f"O número secreto era {NUM_SECRETO}")
print_sep()
return
def print_sep():
"""
Imprime um separador de linhas para visualizar melhor
cada iteração
"""
print("=" * 79)
if __name__ == '__main__':
NUM_MIN = 1
NUM_MAX = 100
NUM_SECRETO = random.randint(NUM_MIN, NUM_MAX)
NUM_CHANCES = 6
jogo(NUM_SECRETO, NUM_CHANCES)