Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

While continuando por um turno além do esperado.

Usando as funcionalidades do while, escrevi esse código para o jogo:

import random

secret_num = random.randint(1,10)
attempts = 10
turn = 1

print("Guess the number! Type a number and try finding the secret number.")
print(f"You have {attempts} attempts")
guess = int(input(f"[Turn nº{turn}] Type a number: "))

while attempts >= 0:
    if guess == secret_num:
        print(f"You typed {guess} and got the correct secret number!")
        print("Congratulations!")
        break
    elif guess > secret_num and attempts > 0:
        attempts -= 1
        turn += 1
        print(f"You typed {guess}, but it is an incorrect answer. Try something smaller")
        print(f"You now have {attempts} attempts")
        guess = int(input(f"[Turn nº{turn}] Type a number: "))
    elif guess < secret_num and attempts > 0:
        attempts -= 1
        turn += 1
        print(f"You typed {guess}, but it is an incorrect answer. Try something bigger")
        print(f"You now have {attempts} attempts")
        guess = int(input(f"[Turn nº{turn}] Type a number: "))
    elif attempts == 0:
        print("You lost.")
        break

Entretanto, observei que o jogo se segue por 11 turnos ao invés de 10, que seria o que eu tinha em mente durante a minha escrita do código.

Por qual motivo esse loop estaria se repetindo mais de 10 vezes e como eu posso fazer para resolver esse problema?

1 resposta
solução!

Se você quer 10 tentativas com ele parando no 0, acredito que você precise 'attempts = 9', porque de 0 a 10 são 11 números realmente. Porém se você colocar 'attempts = 9' o print vai dar a informação de tentativas erradas, então eu coloquei +1 em todos os {attempts}. Ficando assim:

import random

secret_num = random.randint(1, 10)
attempts = 9
turn = 1

print("Guess the number! Type a number and try finding the secret number.")
print(f"You have {attempts + 1} attempts")
guess = int(input(f"[Turn nº{turn}] Type a number: "))

while attempts >= 0:
    if guess == secret_num:
        print(f"You typed {guess} and got the correct secret number!")
        print("Congratulations!")
        break
    elif guess > secret_num and attempts > 0:
        attempts -= 1
        turn += 1
        print(f"You typed {guess}, but it is an incorrect answer. Try something smaller")
        print(f"You now have {attempts + 1} attempts")
        guess = int(input(f"[Turn nº{turn}] Type a number: "))
    elif guess < secret_num and attempts > 0:
        attempts -= 1
        turn += 1
        print(f"You typed {guess}, but it is an incorrect answer. Try something bigger")
        print(f"You now have {attempts + 1} attempts")
        guess = int(input(f"[Turn nº{turn}] Type a number: "))
    elif attempts == 0:
        print("You lost.")
        break

Não sei se é o melhor metodo, porém resolveu o problema! Espero ter ajudado!