Comparaison "string"
débutante en python
-
débutante en python -
débutante en python -
Bonjour,
Je veux que le joueur puisse saisir son déplacement en entrant des lettres et non des chiffres au départ:
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=input("choisissez un deplacement")
Puis, je veux vérifier que les lettres saisies correspondent bien à un déplacement, s'il saisie ' norfgt' je veux afficher un message d'erreur mais comment puis-je faire? J'ai fait une fonction de vérification:
def bonsaisie(grille,a):
if a<>'nord' and a<>'sud' and a<>'est' and a<>'ouest':
return False
else:
return True
Mais elle ne marche pas, je ne veux pas utiliser de chiffres qui correspondraient à un déplacement, je veux absoluement comparer des éléments "string" en fait et je ne sait pas comment l'écrire.
Merci de me conseiller.
Je veux que le joueur puisse saisir son déplacement en entrant des lettres et non des chiffres au départ:
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=input("choisissez un deplacement")
Puis, je veux vérifier que les lettres saisies correspondent bien à un déplacement, s'il saisie ' norfgt' je veux afficher un message d'erreur mais comment puis-je faire? J'ai fait une fonction de vérification:
def bonsaisie(grille,a):
if a<>'nord' and a<>'sud' and a<>'est' and a<>'ouest':
return False
else:
return True
Mais elle ne marche pas, je ne veux pas utiliser de chiffres qui correspondraient à un déplacement, je veux absoluement comparer des éléments "string" en fait et je ne sait pas comment l'écrire.
Merci de me conseiller.
A voir également:
- Comparaison "string"
- Comparaison million milliard - Accueil - Technologies
- Logiciel comparaison photo gratuit - Télécharger - Photo & Graphisme
- Comparaison prix amazon - Accueil - Commerce
- Prix Amazon : comment suivre les évolutions de tarifs - Guide
- Comparaison samsung a15 et a16 - Accueil - Téléphones
6 réponses
Salut,
Tu peux même faire une boucle tant que le choix n'est pas bon ;)
dic=('nord','sud','est','ouest')
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=input_raw("choisissez un deplacement")
if choix is not dic:
print 'mauvais choix'
else:
print 'bon choix'
Tu peux même faire une boucle tant que le choix n'est pas bon ;)
Affiche ton code dans l'ensemble, ça sera plus simple pour débugguer.
Et stp, utilise le bouton de conservation automatique du code (à droite de souligner) pour garder l'indentation.
Et stp, utilise le bouton de conservation automatique du code (à droite de souligner) pour garder l'indentation.
Je t'ai mis tout ce dont je me sert, c surtout la fin qui est importante: la fonction deplacement et partie!
Si t'as le courage de t'y plonger, se serait génial sinon, t'en fais pas j'essayerais de me débrouillerais autrement.
def creergrille():
grille=[0 for i in range(20)]
possible=range(20)
possible=random.sample(possible,2)
for i in range (2):
grille[possible[i]]=(i%2)+1
affiche(grille)
return grille
def affiche(grille):
code=['.','p','T']
for i in range (5):
print code[grille[4*i]],code[grille[4*i+1]],code[grille[4*i+2]],code [grille[4*i+3]]
def gagnant(grille):
gagne=False
if grille.count(1)==0:
gagne=True
return gagne
def cherchecase(grille,animal):
x=0
while (x<20):
if grille[x]==animal:
case=x
x=x+1
return case
def deplacer(grille,depart,arrivee):
grille2=copy.deepcopy(grille)
grille2[arrivee]=grille2[depart]
grille2[depart]=0
return grille2
def nord(case):
if case<4:
case=case+16
else:
case=case-4
return case
def deplacement(g,choix,case):
if choix=='nord':
g=deplacer(copy.deepcopy(g),case,nord(case))
if choix=='sud':
g=deplacer(copy.deepcopy(g),case,sud(case))
if choix=='est':
g=deplacer(copy.deepcopy(g),case,est(case))
if choix=='ouest':
g=deplacer(copy.deepcopy(g),case,ouest(case))
affiche(g)
return g
def partie():
g=creergrille()
tmax=2
t=0
dic=(nord,sud,est,ouest)
i=randint(1,2)
while ((gagnant(g)==False) and (t<tmax)):
if i!=2:
i=i+1
case=cherchecase(g,2)
else:
i=1
case=cherchecase(g,1)
print "joueur %s c'est à vous:"%(i)
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=raw_input("choisissez un deplacement")
while choix not in dic:
choix=raw_input("erreur, choisissez un deplacement")
deplacement(g,choix,case)
affiche(g)
if i!=2:
i=i+1
case=cherchecase(g,2)
else:
i=1
case=cherchecase(g,1)
print "joueur %s c'est à vous:"%(i)
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=raw_input("choisissez un deplacement")
while choix not in dic:
choix=raw_input("erreur, choisissez un deplacement")
deplacement(g,choix,case)
affiche(g)
t=t+1
print "La partie est finie"
Si t'as le courage de t'y plonger, se serait génial sinon, t'en fais pas j'essayerais de me débrouillerais autrement.
def creergrille():
grille=[0 for i in range(20)]
possible=range(20)
possible=random.sample(possible,2)
for i in range (2):
grille[possible[i]]=(i%2)+1
affiche(grille)
return grille
def affiche(grille):
code=['.','p','T']
for i in range (5):
print code[grille[4*i]],code[grille[4*i+1]],code[grille[4*i+2]],code [grille[4*i+3]]
def gagnant(grille):
gagne=False
if grille.count(1)==0:
gagne=True
return gagne
def cherchecase(grille,animal):
x=0
while (x<20):
if grille[x]==animal:
case=x
x=x+1
return case
def deplacer(grille,depart,arrivee):
grille2=copy.deepcopy(grille)
grille2[arrivee]=grille2[depart]
grille2[depart]=0
return grille2
def nord(case):
if case<4:
case=case+16
else:
case=case-4
return case
def deplacement(g,choix,case):
if choix=='nord':
g=deplacer(copy.deepcopy(g),case,nord(case))
if choix=='sud':
g=deplacer(copy.deepcopy(g),case,sud(case))
if choix=='est':
g=deplacer(copy.deepcopy(g),case,est(case))
if choix=='ouest':
g=deplacer(copy.deepcopy(g),case,ouest(case))
affiche(g)
return g
def partie():
g=creergrille()
tmax=2
t=0
dic=(nord,sud,est,ouest)
i=randint(1,2)
while ((gagnant(g)==False) and (t<tmax)):
if i!=2:
i=i+1
case=cherchecase(g,2)
else:
i=1
case=cherchecase(g,1)
print "joueur %s c'est à vous:"%(i)
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=raw_input("choisissez un deplacement")
while choix not in dic:
choix=raw_input("erreur, choisissez un deplacement")
deplacement(g,choix,case)
affiche(g)
if i!=2:
i=i+1
case=cherchecase(g,2)
else:
i=1
case=cherchecase(g,1)
print "joueur %s c'est à vous:"%(i)
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=raw_input("choisissez un deplacement")
while choix not in dic:
choix=raw_input("erreur, choisissez un deplacement")
deplacement(g,choix,case)
affiche(g)
t=t+1
print "La partie est finie"
Apparemment t'as pas bien lu ce que je t'ai dit.
Poste ton code en utilisant le bouton de conservation automatique du code (à droite de souligner)
Poste ton code en utilisant le bouton de conservation automatique du code (à droite de souligner)
def creergrille():
grille=[0 for i in range(20)]
possible=range(20)
possible=random.sample(possible,2)
for i in range (2):
grille[possible[i]]=(i%2)+1
affiche(grille)
return grille
def affiche(grille):
code=['.','p','T']
for i in range (5):
print code[grille[4*i]],code[grille[4*i+1]],code[grille[4*i+2]],code [grille[4*i+3]]
def gagnant(grille):
gagne=False
if grille.count(1)==0:
gagne=True
return gagne
def cherchecase(grille,animal):
x=0
while (x<20):
if grille[x]==animal:
case=x
x=x+1
return case
def deplacer(grille,depart,arrivee):
grille2=copy.deepcopy(grille)
grille2[arrivee]=grille2[depart]
grille2[depart]=0
return grille2
def nord(case):
if case<4:
case=case+16
else:
case=case-4
return case
def deplacement(g,choix,case):
if choix=='nord':
g=deplacer(copy.deepcopy(g),case,nord(case))
if choix=='sud':
g=deplacer(copy.deepcopy(g),case,sud(case))
if choix=='est':
g=deplacer(copy.deepcopy(g),case,est(case))
if choix=='ouest':
g=deplacer(copy.deepcopy(g),case,ouest(case))
affiche(g)
return g
def partie():
g=creergrille()
tmax=2
t=0
dic=(nord,sud,est,ouest)
i=randint(1,2)
while ((gagnant(g)==False) and (t<tmax)):
if i!=2:
i=i+1
case=cherchecase(g,2)
else:
i=1
case=cherchecase(g,1)
print "joueur %s c'est à vous:"%(i)
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=raw_input("choisissez un deplacement")
while choix not in dic:
choix=raw_input("erreur, choisissez un deplacement")
deplacement(g,choix,case)
affiche(g)
if i!=2:
i=i+1
case=cherchecase(g,2)
else:
i=1
case=cherchecase(g,1)
print "joueur %s c'est à vous:"%(i)
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=raw_input("choisissez un deplacement")
while choix not in dic:
choix=raw_input("erreur, choisissez un deplacement")
deplacement(g,choix,case)
affiche(g)
t=t+1
print "La partie est finie"
Un merci pour cette aide très précieuse, meme si je suis débutante, permet moi de te rectifier: c'est pas input-raw mais raw_input! Je suppose que c'était une erreur d'étourderie. Maintenant, j'ai un autre probleme. Voila mon programme:
dic=('nord','sud','est','ouest')
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=raw_input("choisissez un deplacement")
while choix is not dic:
choix=raw_input("erreur, choisissez un deplacement")
Sauf que quand je fais tourner mon programme, il m'affiche que tous mes déplacements sont impossibles:
quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?
choisissez un deplacementnord
erreur, choisissez un deplacementsud
erreur, choisissez un deplacementest
erreur, choisissez un deplacementouest
erreur, choisissez un deplacementhfizopg
erreur, choisissez un deplacement
Si tu as quelques minutes à m'accorder, je t'en serais très reconnaissante!
Merci d'avance.
dic=('nord','sud','est','ouest')
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=raw_input("choisissez un deplacement")
while choix is not dic:
choix=raw_input("erreur, choisissez un deplacement")
Sauf que quand je fais tourner mon programme, il m'affiche que tous mes déplacements sont impossibles:
quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?
choisissez un deplacementnord
erreur, choisissez un deplacementsud
erreur, choisissez un deplacementest
erreur, choisissez un deplacementouest
erreur, choisissez un deplacementhfizopg
erreur, choisissez un deplacement
Si tu as quelques minutes à m'accorder, je t'en serais très reconnaissante!
Merci d'avance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ouh là
J'ai fait des étourderies. Désolé.
J'espère qu'il n'y a plus d'erreurs :)
J'ai fait des étourderies. Désolé.
dic=('nord','sud','est','ouest')
print"quel deplacement souhaitez vous effectuer: nord, sud, est, ouest?"
choix=raw_input("choisissez un deplacement")
ifchoix in dic:
print 'bon choix'
else:
print 'mauvais choix'
J'espère qu'il n'y a plus d'erreurs :)
encore merci pour ton aide. Maintenant j'ai un nouveau probleme qui se pose et qui ne se posait pas avant: le déplacement qui était pris en compte avec la variable choix, je le réutilisais après dans une fonction. Par exemple, si choix=nord alors je fais le déplacement vers le nord et pour cela j'utilise la fonction: choix(case) autrement dit la fonction nord(case). Voici mon programme pour mieux comprendre car mes explications ne suffisent peut etre pas:
dic=['nord','sud','est','ouest']
choix=raw_input("choisissez un deplacement")
while choix not in dic:
choix=raw_input("erreur, choisissez un deplacement")
g=deplacer(copy.deepcopy(g),case,choix(case))
Et voila ce que ça me dit: (ok ça marche quand c'est un déplacement impossible mais ma fonction marche plus)
choisissez un deplacement dof
erreur, choisissez un deplacement nord
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
partie()
File "C:\Documents and Settings\Charpentier\Bureau\Marine\grille2L3.py", line 126, in partie
g=deplacer(copy.deepcopy(g),case,choix(case))
TypeError: 'str' object is not callable
Si ça te dérange pas de m'aider encore une fois ce serait super, après ça je pense que ça sera bon!
dic=['nord','sud','est','ouest']
choix=raw_input("choisissez un deplacement")
while choix not in dic:
choix=raw_input("erreur, choisissez un deplacement")
g=deplacer(copy.deepcopy(g),case,choix(case))
Et voila ce que ça me dit: (ok ça marche quand c'est un déplacement impossible mais ma fonction marche plus)
choisissez un deplacement dof
erreur, choisissez un deplacement nord
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
partie()
File "C:\Documents and Settings\Charpentier\Bureau\Marine\grille2L3.py", line 126, in partie
g=deplacer(copy.deepcopy(g),case,choix(case))
TypeError: 'str' object is not callable
Si ça te dérange pas de m'aider encore une fois ce serait super, après ça je pense que ça sera bon!
choix contient 'nord', 'sud', 'est' ou 'ouest'
et après tu fais choix(case). Ce qui revient à 'nord'(case).
Je ne sais pas ce que représente case. Mais si case est ta fonction, case(choix) serait plus logique ;)
et après tu fais choix(case). Ce qui revient à 'nord'(case).
Je ne sais pas ce que représente case. Mais si case est ta fonction, case(choix) serait plus logique ;)
def nord(case):
if case<4:
case=case+16
else:
case=case-4
return case
c'est cette fonction qui veut pas s'effectuer correctement car choix prend 'nord' et non pas nord. case c'est une variable quelconque, c'est pas elle qui importe.
J'ai essayé de changer dic en mettant dic=(nord,sud,est,ouest) (en enlevant les apostrophes) mais après il reconnait plus mes déplacement.
En fait si ma variable choix='nord' alors je veux appliquer la fontion nord:
def deplacement(g,choix,case):
if choix=='nord':
g=deplacer(copy.deepcopy(g),case,nord(case))
il reconnait tjs pas mais déplacement, il m'affiche "erreur, choississez un autre déplacement" a chaque fois!
if case<4:
case=case+16
else:
case=case-4
return case
c'est cette fonction qui veut pas s'effectuer correctement car choix prend 'nord' et non pas nord. case c'est une variable quelconque, c'est pas elle qui importe.
J'ai essayé de changer dic en mettant dic=(nord,sud,est,ouest) (en enlevant les apostrophes) mais après il reconnait plus mes déplacement.
En fait si ma variable choix='nord' alors je veux appliquer la fontion nord:
def deplacement(g,choix,case):
if choix=='nord':
g=deplacer(copy.deepcopy(g),case,nord(case))
il reconnait tjs pas mais déplacement, il m'affiche "erreur, choississez un autre déplacement" a chaque fois!