0
votes

Essayé d'ajouter une valeur à une condition de temps, mais cela ne revient pas

Je fais un jeu de devinois juste pour tester alors que des boucles, mais je veux une option alors qui joue peut essayer de réessayer.

J'ai essayé de le faire fonctionner à nouveau en ajoutant simplement des "vie" qui au cas où se trouve ( b) Dans le code. P>

b = 3

while b > 0:
    guess = int(input("Guess: "))
    if guess == 9:
        print("You won!")
        break
    else:
        b -= 1

if b == 0:
    print("You lost m8")
    again = input("Wanna try again? [y/n] ")
    if again == "y" or "Y":
        b += 3


2 commentaires

Vous avez besoin de deux telle que des boucles: une pour répéter le jeu et un pour le jeu lui-même. Regardez cette réponse pour plus de détails: Stackoverflow.com/questions/55173820/...


@Reblochonmasque non, ils ont juste besoin d'ajuster leur boucle actuelle


3 Réponses :


2
votes

Il suffit de régler votre boucle en conséquence:

b = 3
while b >= 0:
    if b == 0:
        print('You lost!')
        while True:
            again = input('Want to try again? [y/n] ').lower()
            if again != 'y' and again != 'n':
                pass
            else:
                break
        if again == 'n':
            break
        else:
            b += 3
    else:
        guess = int(input('Guess: '))
        if guess == 9:
            print('You win!')
            break
        else:
            b -= 1


Guess: 7
Guess: 6
Guess: 4
You lost!
Want to try again? [y/n] 3
Want to try again? [y/n] lol
Want to try again? [y/n] y
Guess: 3
Guess: 2
Guess: 1
You lost!
Want to try again? [y/n] n


3 commentaires

@Passarin っ ぱ さ り ー ん while True: moyen pour toujours . Sauf si vous utilisez la déclaration break , que pendant ne cesserait jamais.


@Endrook il a un break aussi.


@perennial_noob, je sais, je m'expliquais juste à Passarin Qu'est-ce qu'un tandis que vrai et comment "casser". Peut-être que mon «ça» vous confond, mais je ne parlais pas de votre pendant , je parlais en général, désolé.



0
votes

une solution simple et simple serait Ajoutez un supplémentaire tandis que : xxx

Ajout d'un autre pendant va résoudre votre problème. Vous pouvez manquer de vie lors d'une itération de la boucle, mais la déclaration B> 0 est uniquement vérifiée au début de chaque itération, donc si vous choisissez y ou Y , b sera augmenté par 3 et le code continuera à fonctionner, si vous ne choisissez pas y , b sera Restez à 0 et le code s'arrêtera donc.

mais si vous souhaitez améliorer votre code, vous devez modifier la section d'entrée. Si vous écrivez quelque chose qui n'est pas y ou y l'arrêt de code, même si vous avez écrit n ° ou :) . Au lieu de cela, vous devez créer un pendant que le vrai ou quelque chose de similaire jusqu'à ce que vous receviez un positif ( y , y , oui . ..) ou négatif ( n , n , non ...) répondez et non de trucs non-sens (comme :) , xd ...)


2 commentaires

Oh c'est tout! Merci beaucoup, très apprécié! Maintenant, je comprends


Si cela répond à vos questions, vous pouvez penser à accepter cette réponse. Sinon, vous êtes libre de choisir une autre réponse comme acceptée ou non de choisir d'entre elles jusqu'à ce que de trouver le bon.



0
votes

Vous pouvez convertir le bloc de jeu en une fonction et appeler la fonction au besoin:

b = 3
def play():
    while b > 0:
        guess = int(input("Guess: "))
        if guess == 9:
            print("You won!")
            break

        else:
            b -= 1
    return None
play()


if b == 0:
    print("You lost m8")
    again = input("Wanna try again? [y/n] ")
    if again == "y" or "Y":
        b =3
        play()


0 commentaires