web-dev-qa-db-fra.com

Comment sortir de la boucle while en Python?

Je dois faire ce jeu pour ma classe de comp, et je ne peux pas comprendre comment sortir de cette boucle. Vous voyez, je dois jouer contre "l'ordinateur" en faisant rouler des nombres plus grands et en voyant qui a le score le plus élevé. Mais je n'arrive pas à comprendre comment "rompre" avec mon tour, et la transition vers les ordinateurs tourne. J'ai besoin de "Q" (quitter) pour signaler le début du tour des ordinateurs, mais je ne sais pas comment le faire.

ans=(R)
while True:
    print('Your score is so far '+str(myScore)+'.')
    print("Would you like to roll or quit?")
    ans=input("Roll...")
    if ans=='R':
        R=random.randint(1, 8)
        print("You rolled a "+str(R)+".")
        myScore=R+myScore
    if ans=='Q':
        print("Now I'll see if I can break your score...")
        break
17
Ninja

Un couple de changements signifie que seul un R ou r sera lancé. Tout autre personnage quittera

import random

while True:
    print('Your score so far is {}.'.format(myScore))
    print("Would you like to roll or quit?")
    ans = input("Roll...")
    if ans.lower() == 'r':
        R = np.random.randint(1, 8)
        print("You rolled a {}.".format(R))
        myScore = R + myScore
    else:
        print("Now I'll see if I can break your score...")
        break
9
John La Rooy

Ce que je ferais, c'est d'exécuter la boucle jusqu'à ce que le ans soit Q

ans=(R)
while not ans=='Q':
    print('Your score is so far '+str(myScore)+'.')
    print("Would you like to roll or quit?")
    ans=input("Roll...")
    if ans=='R':
        R=random.randint(1, 8)
        print("You rolled a "+str(R)+".")
        myScore=R+myScore
5
Phil
ans=(R)
while True:
    print('Your score is so far '+str(myScore)+'.')
    print("Would you like to roll or quit?")
    ans=input("Roll...")
    if ans=='R':
        R=random.randint(1, 8)
        print("You rolled a "+str(R)+".")
        myScore=R+myScore
    else:
        print("Now I'll see if I can break your score...")
        ans = False
        break
4
aug2uag

Ne pas utiliser en tant que True et casser des déclarations. C'est une mauvaise programmation.

Imaginez que vous arriviez à déboguer le code de quelqu'un d'autre et que vous voyiez un certain True sur la ligne 1, puis que vous deviez parcourir 200 lignes de code supplémentaires contenant 15 instructions de rupture, et que vous deviez lire énormément de lignes de code ce qui le fait arriver à la pause. Vous voudriez les tuer ... beaucoup.

La condition qui provoque l'arrêt d'une itération d'une boucle while doit toujours être libre de la ligne de code de la boucle while elle-même sans avoir à chercher ailleurs.

Phil a la "bonne" solution car il a une condition de fin claire dans la déclaration de la boucle while elle-même.

0
Steve Todd