guess a number from 1 to 2. 2 too high guess a number from 1 to 2. 1 >>>
3 Réponses :
Votre Pour corriger, vous peut soit rendre le ou déplacez le corps de la finale Dans les deux cas, j'ai corrigé le style un peu pour correspondre à Pep8 (vous n'avez pas besoin de parenthèses sont des tests conditionnels pour Vraiment, pour minimiser la duplication de code, vous souhaitez déplacer l'entrée ou avec python 3.8 + 's expression d'affectation pour permettre la définition et les tests dans le conditionnel, vous pouvez en faire une tasse plus concise (mais éventuellement plus obscure) avec: p> tandis que code> La condition de boucle quitte la boucle avant votre ELIF GUEST == objectif code> a une chance de voir l'égalité. Chaque fois que vous fournissez une nouvelle entrée, il est toujours testé par pendant que l'objectif! = Devinez: code> avant de pouvoir atteindre elif devinge == Objectif: code>. pendant code> une boucle infinie: p> elif code> en dehors du tandis que code> boucle: p> tandis que code> / si code> en python). p> code> sur le haut de la boucle, et seulement se casser en bas, faisant votre code quelque chose comme: p>
Comment puis-je déplacer l'elfe? cela ne créerait-il pas une erreur de syntaxe?
@Szymonbartnicki: Juste mis à jour avec l'exemple de code. Pour être clair, j'ai dit de déplacer le corps i> du elif code>, pas le elif code> elle-même (vous supprimez le elif < / Code> Ligne elle-même, ainsi que la pause code> qui n'est plus dans une boucle).
Placez la supposition en haut de la boucle plutôt que dans chaque condition. Cela vous permet de savoir quelle ligne est pritée, il est facile de mettre à jour, et vous ne répétez pas le code.
low, high = 1, 2
goal = randint(low, high)
while True:
guess = int(input(f'guess a number from {low} to {high}: '))
if(guess > goal):
print('too high')
elif(guess < goal):
print('too low')
elif(guess == goal):
print('Success!')
break
La comparaison initiale d'un entier à Aucun code> est un peu sify, cependant. Une boucle sans une condition explicite serait meilleure, d'autant plus que vous faites un chèque équivalent dans le corps de la boucle.
Bon point. Il n'est vraiment pas nécessaire d'avoir que si nous utilisons break code> pour sortir de la boucle.
Je vais donc essayer de former ma réponse afin que vous puissiez suivre.
from random import randint
goal = randint(1,2)
guess = int(input('guess a number from 1 to 2'))
guessed = False
while not guessed:
if(guess > goal):
print('too high')
guess = int(input('guess a number from 1 to 2'))
elif(guess < goal):
print('too low')
guess = int(input('guess a number from 1 to 2'))
elif(guess == goal):
print('âº')
guessed = True
Dans la seconde entrée code> appelle code>, la condition
but! = Devinez code> devientfalse code> et lependant code> sorties de boucle. Déplacez ledeviness = int (entrée («Devinez un numéro de 1 à 2 ')) Code> à l'intérieur dupendant que code> boucle, avant le premiersi code> et supprimez l'appel àentrée code> avant lependant code>.Il suffit d'utiliser
pendant que true: code> au lieu de la vérification pré-mature.