Bonjour, j ai commencé il y a peu la programmation en Python et je voudrais savoir s'il existe une commande qui, compte le nombre de lettre, ou encore mieux, reconnait les différentes lettres d'un mot, pour faire un if avec cette commande et pouvoir faire un print disant le nombre de lettres et accepter ou nom merci d'avance ! !
Salut,
Ce que tu demande est vague, pour compter le nombre de lettre d'une chaine tu as la fonction len(chaine) qui te renvoie un entier correspondant au nombre de lettre de la chaine.
Ensuite pour parcourir les lettres d'un mot tu peux utiliser une boucle for :
for lettre in mot:
print("la lettre est " + lettre) #attention à l'indentation
Merci bcp pour le "len" mais après j ai pas compris
je voudrais qu une fois que le programme aie choisis un mots au hazard (r), il dise combien de lettre il contient (grâce a len(r)) et qu il le print mais ensuite que les conditions se face par rapport aux lettres du mots
Voila où j'en suis ....
liste = ("maison", "arbre", "voiture", "bus", "fleure", "bateau")
import random
r = random.choice(liste)
n = len(r)
print("J'ai trouvé ! C'est un mot de", n,"lettres")
print(r)
while 1:
print("Propose moi une lettre")
lettre = input (" ")
Pour ça il faut que tu utilises une boucle soit :
Qui va de 0 à len(r) comme ça la boucle parcourra tous le mot qu'importe sa longueur
OU
une boucle python for lettre in mot qui parcourra aussi chaque lettre du mot.
Pour t'aider :
Tu peux créer une chaine de caratère qui contient le mot dans son état actuel avec les lettres trouvées et des * ou _ à la place des lettres inconnues
j ai pas compris, donc je devrais faire qqch comme ça ? :
liste = ("maison", "arbre", "voiture", "bus", "fleure", "bateau")
import random
r = random.choice(liste)
while 1:
print("Propose moi une lettre")
lettre = input (" ")
if lettre == for lettre in(r)
ce sera bon ?
Non
tu devrais revoir le cours que tu as suivi, le parcour d'une chaine on voit ça au début
CàD ?
J'ai vu que l'on paumais faire
if lettre in r :
print("Bravo tu as trouvé une lettre")
Oui avec ça tu sauras si lettre se trouve dans la chaine r, mais tu dois aussi savoir quel rang et si elle y est plusieurs fois qu'est ce qui se passe ? si ele a déja été proposée qu'est ce qui se passe ? si elle n'y est pas qu'est ce qui se passe ? Pose toi toutes les questions que tu peux, trouve d'abord les réponses en français et ensuite traduit en python .
Tout ça est réussis !! :D mais je voudrais que le programme print des ------ et les remplacent par la lettre si c'est juste (et surtout si la lettre apparait 2 fois ! )
Fantomas : Bah une fois que tu as les indexs ( dans une liste ) correspondant à la position du caractère trouvé dans le vrai mot, tu peux remplacer le "-" dans la deuxième chaine par la lettre trouvée.
Un exemple :
Voilà tes deux mots:
1- "gateau" ( var privée à laquelle le joueur n'a pas accès )
2- "------" ( var publique qui te permet d'avoir une estimation du mot )
Ces deux mots sont de la même forme,
Si tu trouves "t" par exemple, tu obtiens l'index 2 dans la chaîne (1).
Tu remplaces le caractère à l'index 1 dans la chaîne (2) par la lettre trouvée ( "t" ici ),
Et tu obtiens :
"__t___"
Donc il te faut deux fonctions :
- f( pLettre, pMot ) : te renvoie une liste contenant les indexs de pLettre dans pMot
- g( pIndex, pLettre, pMot ) : te renvoie pMot, mais remplace la lettre à l'index pIndex par pLettre
Voilà, j'espère t'avoir donné les éléments nécessaires pour avancer. ![]()
Mais il y a deux fois la lettre à changer il faut d'abord compter combien de fois elle apparait, puis à quel index, puis appeler la fonction ? je m'mebrouille rien qu'à le lire
J'aurai plutot procédé comme ça :
[spoiler] http://pastebin.com/9cZKX12D [/spoiler]
En créant un nouvelle chaine et caractère par caractere, soit on ajoute le "_" du mot caché, soit on ajoute la lettre qu'on vient de trouver
"Mais il y a deux fois la lettre à changer il faut d'abord compter combien de fois elle apparait, puis à quel index, puis appeler la fonction ?"
Bah la première fonction te renvoie une liste d'indexs.
Tu parcours chaque index de cette liste, et pour chaque index, tu appelles la seconde fonction pour remplacer le symbole "-" par la lettre trouvée.
En fait linux tu n'as pas procédé de la même manière que moi.
Ta méthode est légèrement plus rapide à l'execution mais moins lisible que la mienne car j'ai préféré découper en fonction ( j'ai créé un objet PenduManager() en fait ).
M'enfin c'était quand j'avais débuté le python que je l'avais fais,
J'vais voir si j'peux retrouver le source ![]()
J'ai pas trop compris :D Suis vraiment débutant hein ;-)
http://pastebin.com/wTrULhzj
toonjez :
$ python penn.py
Proposez une lettre : a
******
Proposez une lettre : p
Traceback (most recent call last):
File "penn.py", line 17, in <module>
mot_decouvert = verifMot()
File "penn.py", line 5, in verifMot
mot += l
NameError: name 'l' is not defined
$
en commençant par proposer P ça va pas non plus
Oups
http://pastebin.com/3wDC1kP5
Là ça fonctionne.
Merci bcp ! :D mais je voudrais aussi comprendre ... et là... c'est pas trop le cas :D ![]()
Fantomas1999:
C'est toujours plus dur de comprendre le code des autres
même le tiens peut être chaud à comprendre si tu le relis plusieurs mois/semaines plus tard, d'où l'important de commenter et d'utiliser des variables avec un nom qui parle .
Pas comme :
for d in f
if ( (d != p.a) && (p.a.r()==5)):
z++
![]()