Comment dois-je spécifier mes déclarations si-else-elif pour ne pas les laisser finir de conditions de vérification après le premier if-clause?
import random
x = random.randint(1, 100)
correct_answer = False
guess_count = 0
answer = input("Try to guess a number in range of 1 to 100... ")
while guess_count < 6 and correct_answer == False:
if answer != x:
answer = input("Try again...")
guess_count = guess_count + 1
elif answer > x:
print("Try lower number")
guess_count = guess_count + 1
elif answer < x:
print("Try higher number")
guess_count = guess_count + 1
elif answer == x:
print("You won!")
correct_answer = True
elif guess_count > 6:
print("You ran out of chances, sorry")
break
4 Réponses :
Vous devez remplacer les instructions elif code> avec si code> instructions telles que ceci:
Maintenant, je reçois une erreur de syntaxe sur mon dernier si, il stipule qu'il ne peut pas y avoir> entre la chaîne et INT, ne l'aviez pas avant
Oh bien, je ne l'ai pas remarqué au début. Cela est dû au fait que vous essayez de comparer et d'entier (dans votre cas x code>) avec une chaîne (dans votre cas réponse code>). Cela peut être facilement corrigé par Conversion Réponse code> à un entier utilisant int () code>. (Je viens de modifier ma réponse, cela devrait fonctionner maintenant.)
Je crois que c'est ce que tu veux vraiment. J'ai supprimé le code dupliqué et modifié le code @fozoro de correction de l'erreur dans le processus
import random
x = random.randint(1, 100)
correct_answer = False
answer = int(input("Try to guess a number in range of 1 to 100...: "))
guess_count = 1
while guess_count < 6 and correct_answer == False:
guess_count = guess_count + 1
if answer != x:
answer = int(input("Try again...: "))
if answer > x:
print("Try lower number")
if answer < x:
print("Try higher number")
if answer == x:
print("You won!")
correct_answer = True
if guess_count >= 6:
print("You ran out of chances, sorry")
Vous pouvez faciliter cela en modifiant l'ordre de vos conditions afin que vous ne demandiez que demander un autre numéro une fois que toutes les conditions de sortie sont traitées (c.-à-d. Gagner ou perdre):
import random
x = random.randint(1, 100)
correct_answer = False
guess_count = 0
answer = input("Try to guess a number in range of 1 to 100... ")
while True:
guess_count = guess_count + 1
answer = int(answer)
if answer == x:
print("You won!")
correct_answer == True
break
if guess_count > 6:
print("You ran out of chances, sorry")
break
if answer > x:
answer = input("Try a lower number:")
else:
answer = input("Try a higher number:")
Code de travail entièrement:
import random
x = random.randint(1, 100)
correct_answer = False
guess_count = 0
answer = int(input("Try to guess a number in range of 1 to 100... "))
while guess_count < 6 and correct_answer == False:
if answer != x and answer > x:
answer = int(input("Try again... The number should be lower "))
guess_count = guess_count + 1
if answer != x and answer < x:
answer = int(input("Try again... The number should be higher "))
guess_count = guess_count + 1
if answer == x:
print("You won!")
correct_answer = True
if guess_count > 5:
print("You ran out of chances, sorry")
break
Bienvenue sur Stackoverflow. J'ai une question légèrement hors sujet: D'où vient cet exercice? Quel livre, tutoriel, article ou classe l'attribue? Je l'ai vu sur Stackoverflow plusieurs fois et ... disons simplement que j'ai des opinions.
Hé, l'exercice similaire a été montré sur la vidéo de Freecodecamp de Python sur YouTube
Votre question concerne l'écriture d'une échelle de déclaration IF-else-elif et de ne pas avoir ACCOMPORTER B> entre plusieurs clauses pouvant être touchées avec la même valeur. Notez que
réponse! = X code>,réponse> x code>,réponse chevauchement; Comment vous attendez-vous à ce que ces cas soient gérés? Quelles clauses voulez-vous frapper?