1
resposta

Como não gastar tentativa com inputs inválidos?

Prezados,

Quero dar uma melhorada no código do meu jogo de modo a não "gastar a tentativa" do jogador quando este faz um input inválido e também não quero que o programa se encerre abruptamente com error code 1 . Por exemplo: quero devolver a ele a vez caso ele digite uma letra ao invés de um número na tentativa. Consegui resolver a parte de não encerrar abruptamente com o código abaixo:

for rodada in range (1, total_de_tentativas +1): #while (rodada <= total_de_tentativas):

print("Rodada {} de {}".format(rodada, total_de_tentativas))
try:
    chute_str = input("Digite o seu número entre 1 e 100:")
    chute = int(chute_str)
except ValueError as erro:
    print("Você deve digitar um número, não uma letra/símbolo!")
    print(erro)
    continue

Porém, essa tentativa sem sucesso gasta uma rodada do usuário.

Como fazer uma "iteração negativa" na variável "rodada"?

Obrigado!

1 resposta

Usa esse código abaixo, usei if ao invés de try para não perder uma rodada


verificacao = False
while verificacao == False:
    chute_str = input("Digite o seu número entre 1 e 100:")
    if chute_str.isnumeric():
      chute = int(chute_str)
      if chute>=1 and chute<=100:        
        verificacao = True
      else: 
        print("O número tem que ser inteiro entre 1 e 100!")
    else:    
      print("Você deve digitar um número entre 1 e 100, não uma letra/símbolo")
print("Continua...")