-1
votes

Condition appropriée en boucle

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


3 commentaires

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 entre plusieurs clauses pouvant être touchées avec la même valeur. Notez que réponse! = X , réponse> x , réponse chevauchement; Comment vous attendez-vous à ce que ces cas soient gérés? Quelles clauses voulez-vous frapper?


4 Réponses :


0
votes

Vous devez remplacer les instructions elif avec si instructions telles que ceci: xxx


2 commentaires

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 ) avec une chaîne (dans votre cas réponse ). Cela peut être facilement corrigé par Conversion Réponse à un entier utilisant int () . (Je viens de modifier ma réponse, cela devrait fonctionner maintenant.)



0
votes

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")


0 commentaires

1
votes

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:")


0 commentaires

0
votes

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


0 commentaires