Problème de liste!
Résolu
theolefou
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
theolefou Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
theolefou Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
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 :
du coup j'ai tester de faire résoudre à l'ordi son propre mastermind!
avec ce code:
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 :
si quelqu'un a une idée une piste, voir même par chance une solution je suis preneur!
merci d'avance!
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:
et la sa fonctionne, il me trouve la bonne combinaison!
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)
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!
A voir également:
- Problème de liste!
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Liste de diffusion whatsapp - Guide
- Site dangereux liste - Guide
2 réponses
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 :
par
( la fonction str transforme un nombre en chaine de caractères)
Secondesolution
remplacer (dans le else)
par
(la fonction int transforme une chaine de caractère en entier, plante sil cela n'est pas possible)
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)