Ce programme est une estimation des nombres. Il génère 4 chiffres et permet à l'utilisateur de deviner. Après chaque supposition, il affichera le nombre de nombres corrects et l'endroit où ils se trouvent. Je ne reçois aucune erreur de syntaxe en l'exécutant, même si tous les nombres sont corrects, il est dit qu'aucun ne l'est. Je crois que c'est parce que la variable numérique n'a pas de guillemets et la liste de suppositions en a. Toute aide appréciée, merci!

from random import randint

    number = [(randint(0,9)), (randint(0,9)), (randint(0,9)), (randint(0,9))]



    while True:
        guess_int = (int(input('Guess a 4 digit number: ')))
        guess_str = (str(guess_int))
        guess = (list(guess_str))

        numcorrect = 0

        if guess == number:
            print('Correct!')

        elif number[0] == guess[0]:
            numcorrect = numcorrect + 1
            print('You got the first number correct')
        elif number[1] == guess[1]:
            numcorrect = numcorrect + 1
            print('You got the second number correct')
        elif number[2] == guess[2]:
            numcorrect = numcorrect + 1
            print('You got the third number correct')
        elif number[3] == guess[3]:
            numcorrect = numcorrect + 1
            print('You got the forth number correct')

        if numcorrect != 0:
            print('You got', numcorrect, 'numbers correct')

        if numcorrect == 0:
            print('You got no numbers correct')
1
John 4 nov. 2019 à 02:54

2 réponses

Bug fixant votre programme avec un peu plus ..

from random import randint

number = [(randint(0, 9)), (randint(0, 9)), (randint(0, 9)), (randint(0, 9))]

print(number)

while True:
    guess_list_str = list(input('Guess a 4 digit number: '))
    guess = [int(g) for g in guess_list_str] # This is how you get rid of the quotes

    numcorrect = 0

    if number[0] == guess[0]:
        numcorrect = numcorrect + 1
        print('You got the first number correct')
    if number[1] == guess[1]:
        numcorrect = numcorrect + 1
        print('You got the second number correct')
    if number[2] == guess[2]:
        numcorrect = numcorrect + 1
        print('You got the third number correct')
    if number[3] == guess[3]:
        numcorrect = numcorrect + 1
        print('You got the forth number correct')

    if numcorrect != 0:
        print('You got', numcorrect, 'numbers correct')

    if numcorrect == 0:
        print('You got no numbers correct')

    if guess == number:
        print('Correct!')
        break  # Added code
1
moctarjallo 4 nov. 2019 à 00:42

votre variable number est une liste d'entiers tandis que guess est une liste de chaînes, vous devez d'abord en convertir une, je vous suggère de faire quelque chose comme ceci:

guess_int = int(input('Guess a 4 digit number: '))
guess_str = str(guess_int)
guess = list(map(int,guess_str))

et une autre chose est, sur la base de la logique derrière ce problème, vous devriez reconsidérer l'utilisation de elif, car si la première condition est déclenchée, les autres seront négligées bien qu'elles puissent avoir une chance. vous devez donc utiliser if à la place pour être logiquement vrai.

Le troisième point est que ce temps devrait s'arrêter d'une manière ou d'une autre, ou du moins après avoir résolu un problème, le nombre à deviner devrait être actualisé. essayez d'y mettre fin si vous avez reçu la bonne réponse ou renouvelez le numéro.

0
phalanx 4 nov. 2019 à 00:14