Je suis nouveau dans le code et j'essayais de créer un jeu de devinettes comme l'un de mes premiers projets. Je pense que j'ai presque fini mais ce programme ne se termine pas. Au lieu de se terminer quand il reste 0 essais, il continue simplement le jeu même avec le moins, Ps. (J'ai fixé le nombre pour le moment, mais générera un nombre aléatoire lorsque ce problème sera résolu)

Je suis nouveau dans le code et j'essayais de créer un jeu de devinettes comme l'un de mes premiers projets. Je pense que j'ai presque fini mais ce programme ne se termine pas. Au lieu de se terminer quand il reste 0 essais, il continue simplement le jeu même avec le moins, Ps. (J'ai fixé le nombre pour le moment, mais générera un nombre aléatoire lorsque ce problème sera résolu)

print("Welcome to my guessing game can you get the magic number hint, it's between 1 and 100 ")

Magic_number = 7
guess = int(input("Enter your guess:"))
guess_limit = 5
guess_counter = 1
out_of_guesses = False
print("You have", str(guess_limit - guess_counter), "tries left")

while guess != Magic_number and not out_of_guesses:
    while guess < Magic_number:
        print("That number is too small, try again")
        guess = int(input("Enter guess: "))
        guess_counter += 1
        print("You have", str(guess_limit - guess_counter), "tries left")

    while guess > Magic_number:
        print("That number is too high try again")
        guess = int(input("Enter guess: "))
        guess_counter += 1
        print("You have", str(guess_limit - guess_counter), "tries left")

    if guess == Magic_number:
        print("Well done you got it!!")

if out_of_guesses:
    print("Game over, sorry")
-1
itz_benjamin 2 juin 2020 à 00:23

4 réponses

Meilleure réponse

Vous ne mettez pas à jour out_of_guesses, ce qui signifie que votre clause de sortie de boucle while not out_of_guesses n'est jamais déclenchée.

Vous faites trop de boucles aussi; votre programme reste coincé dans les boucles while internes.

Essayez quelque chose comme ceci:

print("Welcome to my guessing game can you get the magic number hint, it's between 1 and 100 ")

Magic_number = 7

guess_limit = 5
guess_counter = 0
out_of_guesses = False

print("You have", str(guess_limit - guess_counter), "tries left")

while not out_of_guesses:
    guess = int(input("Enter guess: "))

    if guess == Magic_number:
        print("Well done you got it!!")
        break

    elif guess < Magic_number:
        print("That number is too small, try again")

    elif guess > Magic_number:
        print("That number is too high try again")

    guess_counter += 1
    print("You have", str(guess_limit - guess_counter), "tries left")

    # exit clause
    if guess_limit == guess_counter:
        out_of_guesses = True
        print("Game over, sorry")
0
Sy Ker 1 juin 2020 à 21:48

Vous n'avez pas mis à jour la variable out_of_guesses, et vous pouvez utiliser if et non while pour les boucles internes afin d'éviter de multiplier l'endroit à vérifier out_of_guesses. Ensuite, utilisez un break if find, qui permet de remettre le code à exécution après et de ne pas le dupliquer

while not out_of_guesses:
    if guess < Magic_number:
        print("That number is too small, try again")
    elif guess > Magic_number:
        print("That number is too high try again")
    elif guess == Magic_number:
        print("Well done you got it!!")
        break

    guess = int(input("Enter guess: "))
    guess_counter += 1
    print("You have", str(guess_limit - guess_counter), "tries left")
    out_of_guesses = guess_counter>=guess_limit
0
azro 1 juin 2020 à 21:30

Vous n'êtes pas obligé de faire while guess > Magic_number: ou while guess > Magic_number:. Vous pouvez utiliser directement if while guess > Magic_number: et if guess > Magic_number: à leur place respectivement et le programme continuera à boucler car il y a une boucle externe.

Votre programme ne s'arrête pas car vous n'avez pas vérifié la condition à l'intérieur des boucles while internes et par conséquent, il continue de tourner. Le guess_counter continuera d'augmenter à l'intérieur des boucles while internes mais vous n'avez fait aucune condition pour rompre la boucle sur la base de guess_counter.

Remplacez simplement les boucles while internes par if puisque vous n'en avez de toute façon pas besoin. J'espère que ceci résoudra votre problème!

0
Abhishek 1 juin 2020 à 21:28

Quelques erreurs:

  • Les boucles while à l'intérieur de la boucle principale doivent être des instructions if.

  • Le out_of_guesses était complètement inutilisé dans votre code

Pointe:

  • Vous pouvez sortir d'une boucle while (ou for) en utilisant break
print("Welcome to my guessing game can you get the magic number hint, it's between 1 and 100 ")

Magic_number = 7
guess_limit = 5
guess_counter = 1
guess = None

while guess != Magic_number:

    guesses_left = guess_limit - guess_counter + 1

    if guesses_left == 0:
        print("Game over, sorry")
        break

    print("You have", guesses_left, "tries left")
    guess = int(input("Enter guess: "))
    guess_counter += 1

    if guess < Magic_number:
        print("That number is too small, try again")

    elif guess > Magic_number:
        print("That number is too high try again")

    elif guess == Magic_number:
        print("Well done you got it!!")
        break

0
np8 1 juin 2020 à 21:39