-1
votes

Tandis que la boucle fonctionne pour toujours

Je travaille sur un jeu de rock, de papier, de ciseaux et j'ai utilisé plusieurs fonctions en tant que back-end pour le programme. Mon problème est que je ne veux pas d'autres intrants autres que R, P, S, Q, R, S, P, Q. Donc, j'ai configuré une boucle tandis que si l'entrée n'a pas égalé ces lettres, que la boucle continuera à courir. Cependant, même si j'avais rempli ses conditions, la boucle continuera de continuer à courir. XXX


1 commentaires

Vous vouliez probablement dire et au lieu de ou .


4 Réponses :


0
votes

Chaque lettre n'est pas r ou non p car aucune lettre n'est à la fois r et p. Donc, votre pendant que ne peut jamais se terminer.


0 commentaires

0
votes

Il y a deux points ici:

Tout d'abord, une fonction est une fonction (supports d'utilisation). Deuxièmement, vous devez utiliser 'et' au lieu de 'ou'. Cependant, vous pouvez le réécrire comme ci-dessous. P>

#Main Program
print('Welcome to Rock, Paper, and Scissors. You know the rules already. 
 But, we will play for as long as you want. If you win more rounds, then you 
 survive. If I win though, well... you already know.')
w = input('Choose a weapon(r for rock, p for paper, s for scissors, q for 
 quit)!: ').lower()
while w not in 'rpsq' or len(w) > 1:
  w = input('Choose a weapon(r for rock, p for paper, s for scissors, q for 
 quit)!: ').lower()
else:
  if w == 'q':
    record(1)
    sys.exit
else:
  if game(w):
    memory(w, fingers)
    respond(numrock, numpaper, numscissors)
    hand1(fingers)


1 commentaires

Vous pouvez éviter la vérification len en modifiant la condition sur tandis que w w non in ('r', 'p', 's', 'q'): ( ( > Le tuple S de constantes est mis en cache non contrairement à str ), de sorte que le coût devrait être similaire.



0
votes

Peut-être que si vous configurez un ensemble () de réponses admissibles d'abord, vous pourriez obtenir ce que vous voulez. XXX PRE>

ALORS P>

>>> while w not in aok:
...    print("Invalid entry. Please re-try"
...    w = input("Please enter ....")
...


0 commentaires

0
votes

Vous n'avez pas utilisé la forme correcte de la fonction inférieure () . Vos conditions n'étaient également pas correctes.

Il est toujours préférable d'informer l'utilisateur pour tout invalide ou Entrée incorrecte demandant plutôt à nouveau.

Vous pouvez modifier votre code comme suit pour plus de clarté: xxx


0 commentaires