Jeu chercher un nombre

thiru -  
Phil_1857 Messages postés 1956 Statut Membre -
Bonjour,
Je cherche a crée un jeu; l'ordinateur choisit au hasard un nombre entre 0000 et 7777. L'utilisateur doit le deviner en un nombre minimum d'essais.
A chaque étape, l'ordinateur aide l'utilisateur à trouver en lui indiquant :
Les chiffres qui sont à la bonne place.
Les chiffres qui sont à la mauvaise place.
voici mon code :

from random import*
L = []
L.append(randint(0, 7777))

    
A = int(input("Entrez votre nombre"))
b = A

VBP = 0 # compteur des valeurs bien placées
VMP = 0 # compteur des valeurs mal placées
 
for i in range(0,len(L)):
    if L[i]==b[i]:
        print("La valeur", L[i], "de l'indice", i, "est bien placée")
        VBP += 1
    elif L[i] in b:
        print("La valeur", L[i], "de l'indice", i, "est mal placée")   
        VMP += 1
 
print()
print("Nombre de valeurs bien placées:", VBP)
print("Nombre de valeurs mal placées:", VMP)


Pouvez vous m'aider a le compléter

Configuration: Macintosh / Safari 13.1.1
A voir également:

7 réponses

Phil_1857 Messages postés 1956 Statut Membre 168
 
Bonjour Thiru,

On te demande de procéder exactement comme ça (affichage des chiffres bien placés ou pas)

ou bien as tu le droit de choisir une autre méthode ?

(Par exemple celle de la dichotomie : entre 0 et 7777, je répond la moitié (3888)

et le programme dit si le nombre est plus petit ou plus grand, et suivant la réponse je donne le

nombre entre 0 et 3888, ou entre 3888 et 7777, et ainsi de suite ...)
0
thiru
 
bonjour, phil



oui, je dois choisir ce procédé
0
Phil_1857 Messages postés 1956 Statut Membre 168
 
OK,

Et déjà, est-ce que ton code fonctionne, avant d'aller plus loin ?

Moi, je vois des erreurs, dont celle-ci:

for i in range(0,len(L)):
    if L[i]==A[i]:


Tu utilises le même indice i pour A et L, comme si ils avaient forcément tous les 2 la même longueur

Mais si L = 5953 et A = 15 ..... ça plante

un nombre au hasard entre 0 et 7777, ca peut être 12 ou 256 ou 6543, pas forcément 4 chiffres

tu saisi un int, donc même si tu entre 0012, ca donne A=12
0
jee pee Messages postés 42502 Date d'inscription   Statut Modérateur Dernière intervention   9 767
 
Bonjour,

Quand on lit l'énoncé : un nombre entre 0000 et 7777, et chiffres bien ou mal placés, on pense au Mastermind. Il me semble alors plus judicieux de traiter une chaine de 4 caractères, plutôt qu'un nombre.

Par exemple en utilisant une conversion d'un nombre formaté, on a bien 0000 et pas 0, qui serait plus délicat à tester :
L='{:04d}'.format(randint(0, 7777))
pareil pour le nombre saisi.

Après il faut surement faire une boucle sur la saisie de l'utilisateur, puisqu'il devrait avoir n tentatives pour résoudre le problème.


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1956 Statut Membre 168
 
Ben voila, moi, j'ai repris son code avec des chaines et ca marche

mais je voulais le laisser chercher avant de lui donner la solution ...

et déjà qu'il réponde à ma question d'abord ... avant d'aller plus loin
0
thiru
 
merci j'ai pu voir mon erreur je vous en remercie
Bonne soirée. Thiru Magale
0
Phil_1857 Messages postés 1956 Statut Membre 168
 
Bonjour thiru,

OK, mais maintenant, il te reste à coder la suite du jeu

C'était ta question au départ ...
0