1
resposta

Curiosidade de novato.

O professor mostrou uma situação caso o jogador botasse um numero fora do exigido. Tal situação, em que o usuário perde uma jogada. Com o ficaria o código sem que o jogador perdesse a vez?

1 resposta

Oii Ricardo, como você está? Espero que esteja bem ^-^

Curiosidades são sempre bem-vindas, obrigada por postar a sua por aqui.

Podemos fazer um laço de repetição que force o usuário a digitar um número dentro dos parâmetros exigidos e caso o número não esteja nos parâmentros, o código irá se repetir até que o número digitado seja válido. Sendo assim, só irá para a próxima jogada quando um número válido for digitado. Veja como fica:

while(chute < 1 or chute > 100):
  print("Você deve digitar um número entre 1 e 100!")
  chute_str = input("Digite um número entre 1 e 100: ")
  print("Você digitou " , chute_str)
  chute = int(chute_str)

Resultado:

*********************************
Bem vindo ao jogo de Adivinhação!
*********************************
Tentativa 1 de 3
Digite um número entre 1 e 100: 90
Você digitou  90
Você errou! O seu chute foi maior do que o número secreto.
Tentativa 2 de 3
Digite um número entre 1 e 100: 300
Você digitou  300
Você deve digitar um número entre 1 e 100!
Digite um número entre 1 e 100: 0
Você digitou  0
Você deve digitar um número entre 1 e 100!
Digite um número entre 1 e 100: -1
Você digitou  -1
Você deve digitar um número entre 1 e 100!
Digite um número entre 1 e 100: 40
Você digitou  40
Você errou! O seu chute foi menor do que o número secreto.
Tentativa 3 de 3
Digite um número entre 1 e 100: 42
Você digitou  42
Você acertou!
Fim do jogo

Observe que na tentativa 2 de 3 digitamos o número 300, após isso, o número 0 e logo em seguida, o -1, e apenas quando digitamos um número válido dentro dos parâmetros (número 40) que passamos para a tentativa 3 de 3.

Veja como fica o código completo após essa alteração (substituímos o if que havia no código pelo while):

print("*********************************")
print("Bem vindo ao jogo de Adivinhação!")
print("*********************************")

numero_secreto = 42
total_de_tentativas = 3

for rodada in range(1, total_de_tentativas + 1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))
    chute_str = input("Digite um número entre 1 e 100: ")
    print("Você digitou " , chute_str)
    chute = int(chute_str)

    while(chute < 1 or chute > 100):
        print("Você deve digitar um número entre 1 e 100!")
        chute_str = input("Digite um número entre 1 e 100: ")
        print("Você digitou " , chute_str)
        chute = int(chute_str)

    acertou = chute == numero_secreto
    maior   = chute > numero_secreto
    menor   = chute < numero_secreto

    if(acertou):
        print("Você acertou!")
        break
    else:
        if(maior):
            print("Você errou! O seu chute foi maior do que o número secreto.")
        elif(menor):
            print("Você errou! O seu chute foi menor do que o número secreto.")

print("Fim do jogo")

Qualquer dúvida estou por aqui.

Abraços e bons estudos!