Problème de liste!

Résolu/Fermé
theolefou Messages postés 14 Date d'inscription vendredi 10 janvier 2014 Statut Membre Dernière intervention 24 novembre 2014 - 10 janv. 2014 à 23:41
theolefou Messages postés 14 Date d'inscription vendredi 10 janvier 2014 Statut Membre Dernière intervention 24 novembre 2014 - 11 janv. 2014 à 00:00
bonjour,
Dans le cadre d'un projet d'ISN au lycée je doit créé un mastermind en python.
le problème est que quand au début de mon programme de créé une liste de 4 chifre aléatoire entre 1 et 9 il me l'affiche par exemple comme cela [1,2,3,4]
jusque la pas de problème!
mais la où sa coince c'est quand je demande à l'utilisateur de rentrer sa propre liste, il me l'affiche [ '1','2','3','4' ]
et du coup j'ai beau saisir la bonne liste il me dit quelle ne sont pas égale! du coup je ne comprend pas comment je peut faire!

voila le code :


from random import*
n=0
s = [randrange(0,10),randrange(0,10),randrange(0,10),randrange(0,10)]
print (s)
P = list([str(randrange(0,10)),str(randrange(0,10)),str(randrange(0,10)),str(randrange(0,10))])
print (P)
if P == s:
print ("bravo")
else:
while P != s:
print ("essaye encore")
n = n+1
print ("nombre d'essais:",n)
P = [input('chifre 1'), input('chifre 2'), input('chifre 3'), input('chifre 4')]
print(P)
if P == s:
print ("bravo")



du coup j'ai tester de faire résoudre à l'ordi son propre mastermind!
avec ce code:



from random import*
n=0
s = [randrange(0,10),randrange(0,10),randrange(0,10),randrange(0,10)]
p = [randrange(0,10),randrange(0,10),randrange(0,10),randrange(0,10)]
print (p)
print (s)
while p != s:
n = n+1
print(s)
p = [randrange(0,10),randrange(0,10),randrange(0,10),randrange(0,10)]
print(p)
print ("encore")

print ("bravo")
print ("c'est pas trop tot!!!")
print (n)

et la sa fonctionne, il me trouve la bonne combinaison!

du coup j'ai simplifier se qui ne marchait pas en éssayant de changer un peut la fasson de faire, mais la liste saisit par l'utilisateur s'affiche en [none,none,none,none] ...?

voila le code de se dernier :

from random import *
a=(randrange(0,10))
b=(randrange(0,10))
c=(randrange(0,10))
d=(randrange(0,10))

MM = [a,b,c,d]
print (MM)
a= (print(input("chifre 1")))
b= (print(input("chifre 2")))
c= (print(input("chifre 3")))
d= (print(input("chifre 4")))

MM= [a,b,c,d]
print(MM)

si quelqu'un a une idée une piste, voir même par chance une solution je suis preneur!

merci d'avance!

2 réponses

seabust Messages postés 740 Date d'inscription lundi 10 mars 2008 Statut Membre Dernière intervention 30 juillet 2015 101
10 janv. 2014 à 23:55
Bonjour,

Ton problème est que tu essaies de comparer une liste de nombre (ce qui est tiré au sort par l'ordinateur) avec une liste de caractères (ce que tape l'utilisateur).

En effet la fonction input() te renvoie une chaine de caratères. Par exemple l'utilisateur pourrait très bien écrire des lettres, il n'est pas forcé d'écrire des chiffres.

C'est pour cela que les nombre et ce qui est tapé au clavier sont des choses très différentes et ne peuvent pas être égales.

Pour cela tu as deux possibilités :

- Soit tu transforme tout en caractères
- Soit tu transforme tout en nombres.

Dans le second cas, celui où tu essaie de transformer les caractères tapés par l'utilisateur en nombres, ton programme va planter si on écrit des lettres à la place de chiffres (il est impossible de convertir la lettre "a" en un nombre).

Je te conseille donc la première solution

Première solution

remplacer :

s = [randrange(0,10),randrange(0,10),randrange(0,10),randrange(0,10)]

par

s = [str(randrange(0,10)),str(randrange(0,10)),str(randrange(0,10)),str(randrange(0,10))]

( la fonction str transforme un nombre en chaine de caractères)

Secondesolution

remplacer (dans le else)

P = [input('chifre 1'), input('chifre 2'), input('chifre 3'), input('chifre 4')]

par

P = [int(input('chifre 1')), int(input('chifre 2')), int(input('chifre 3')), int(input('chifre 4'))]

(la fonction int transforme une chaine de caractère en entier, plante sil cela n'est pas possible)


2
theolefou Messages postés 14 Date d'inscription vendredi 10 janvier 2014 Statut Membre Dernière intervention 24 novembre 2014 2
11 janv. 2014 à 00:00
je vien de tester avec la deuxième solution c'est parfait! sa fonctionne à la perfection!
merci
0