CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Le jeu du pendu

Pseudo supprimé
Pseudo supprimé 10 juin 2014 à 13:13:24

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 ! !

linux13-04
linux13-04
Niveau 8
10 juin 2014 à 14:08:12

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

Pseudo supprimé
Pseudo supprimé 10 juin 2014 à 16:00:38

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

Pseudo supprimé
Pseudo supprimé 10 juin 2014 à 16:15:59

Voila où j'en suis ....

  1. Choix du mots

liste = ("maison", "arbre", "voiture", "bus", "fleure", "bateau")
import random
r = random.choice(liste)

  1. Nombre de lettre

n = len(r)
print("J'ai trouvé ! C'est un mot de", n,"lettres")
print(r)

  1. Essay de lettre

while 1:
print("Propose moi une lettre")
lettre = input (" ")

linux13-04
linux13-04
Niveau 8
10 juin 2014 à 17:14:56
  1. u il le print mais ensuite que les conditions se face par rapport aux lettres du mots

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

Pseudo supprimé
Pseudo supprimé 10 juin 2014 à 17:24:17

j ai pas compris, donc je devrais faire qqch comme ça ? :

  1. Choix du mots

liste = ("maison", "arbre", "voiture", "bus", "fleure", "bateau")
import random
r = random.choice(liste)

  1. Essay de lettre

while 1:
print("Propose moi une lettre")
lettre = input (" ")
if lettre == for lettre in(r)

ce sera bon ?

linux13-04
linux13-04
Niveau 8
10 juin 2014 à 17:40:28

Non :( tu devrais revoir le cours que tu as suivi, le parcour d'une chaine on voit ça au début

Pseudo supprimé
Pseudo supprimé 10 juin 2014 à 17:42:06

CàD ?

Pseudo supprimé
Pseudo supprimé 10 juin 2014 à 20:14:36

J'ai vu que l'on paumais faire

if lettre in r :
print("Bravo tu as trouvé une lettre")

linux13-04
linux13-04
Niveau 8
10 juin 2014 à 21:05:02

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 .

Pseudo supprimé
Pseudo supprimé 11 juin 2014 à 11:59:44

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 ! )

Pseudo supprimé
Pseudo supprimé 11 juin 2014 à 12:34:19

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___"

:d) 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. :o))

linux13-04
linux13-04
Niveau 8
11 juin 2014 à 13:01:51
  1. g( pIndex, pLettre, pMot ) : te renvoie pMot, mais remplace la lettre à l'index pIndex par pLettre

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 :hap:

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

Pseudo supprimé
Pseudo supprimé 11 juin 2014 à 13:42:59

"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 :noel:

Pseudo supprimé
Pseudo supprimé 11 juin 2014 à 13:49:37

J'ai pas trop compris :D Suis vraiment débutant hein ;-)

Toonjez
Toonjez
Niveau 10
11 juin 2014 à 16:26:19

http://pastebin.com/wTrULhzj

linux13-04
linux13-04
Niveau 8
11 juin 2014 à 17:26:21

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

Toonjez
Toonjez
Niveau 10
11 juin 2014 à 17:36:23

Oups
http://pastebin.com/3wDC1kP5

Là ça fonctionne.

Pseudo supprimé
Pseudo supprimé 11 juin 2014 à 18:39:00

Merci bcp ! :D mais je voudrais aussi comprendre ... et là... c'est pas trop le cas :D :(

linux13-04
linux13-04
Niveau 8
11 juin 2014 à 18:46:30

Fantomas1999:

C'est toujours plus dur de comprendre le code des autres :oui: 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++

:hap: :rire:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment