IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python un petit souci simple :/


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Points : 21
    Points
    21
    Par défaut Python un petit souci simple :/
    Bonjour à tous
    Je suis présentement devant un petit souci dans un code de Pendu très très simple.
    Je suis très débutant et ne trouve pas d'aide sur internet, alors je requiert humblement votre aide :

    Je ne sais remplacer le caractère au rang disons n par un autre.
    exemple : L'utilisateur doit trouver le mot "Ratapa", il entre la lettre "p"
    Dans la chaîne de caractère" R-----"
    Sauriez vous remplacer l'avant dernier tiret par p mais juste celui-ci ? Et si il rentre la lettre "a", pourriez vous me dire comment remplacer les tirets correspondants par la lettre a ? En une ou plusieurs méthodes/fonctions

    >Ra-ta-a

    P.S : désolé si je m'exprime pas très très bien

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Avec Python, on ne peut pas "modifier" une chaine de caractères: il faut en reconstruire une à chaque fois.

    En prenant ton exemple (Python 2.7):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x = "R-----"
    # index du "p" à insérer = 4
    y = x[:4] + "p" + x[5:]
    print y
    R---p-
    Voilà une fonction qui devrait faire le boulot dans le cas général:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    remplace = lambda chaine, car, index : chaine[:index] + car + chaine[index+1:]
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x = "0123456789"
    for i in range(0, len(x)):
        print remplace(x, "_", i)
    Ce qui affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    _123456789
    0_23456789
    01_3456789
    012_456789
    0123_56789
    01234_6789
    012345_789
    0123456_89
    01234567_9
    012345678_
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Une autre manière d'aborder le problème est de parcourir toutes les lettres du mot et de vérifier chaque fois si cette lettre doit être affichée ou non.

    En admettant que tu aies un mot à trouver et une liste de lettres proposées par le joueur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    def ecrire_mot(mot, liste_lettres):
        mot_a_ecrire = ""  # au départ, il n'y a rien à écrire
     
        for lettre in mot:  # on parcours les lettres du mot unes à unes
            if lettre in liste_lettres:  # si la lettre est dans la liste des lettres proposées par le joueur ...
                mot_a_ecrire += lettre  # on ajoute la lettre à ce qui doit être affiché
            else:
                mot_a_ecrire += "_"  # sinon on ajoute un '_'
     
        return mot_a_ecrire
     
    print ecrire_mot("analyse", ["a", "d", "e"])
     
    ## a_a___e

  4. #4
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Points : 21
    Points
    21
    Par défaut
    Bonsoir à vous deux,
    Merci beaucoup pour vos rapides réponses qui m'ont permis de résoudre mon souci ! (:
    C'est super sympa!
    Je passe en résole
    (:

  5. #5
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Points : 21
    Points
    21
    Par défaut Néophyte
    Si vous voulez voir le programme final d'un néophyte (vous êtes autorisés à vous moquer vu le bazar)
    je devrais utiliser les commentaires
    et j'ai pas mis beaucoup de mot dans la liste de mots
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    import random
    listedemots=["albatros"]
    liste_lettres=["a","z","e","r","t","y","u","i","o","p","q","s","d","f","f","g","h","j","k","l","m","w","x","c","v","b","n"]
    liste_lettres_demandées=[]
    motatrouver=random.choice(listedemots)
    premierelettre=motatrouver[:1:]
    motmystere=premierelettre
    i=-1
    fautes=0
    w=0
    for y in range(1,len(motatrouver)):
        motmystere+="-"
    while fautes!=7 and w!=1:
        er=0
        i+=1
        if i==0:
            a=premierelettre
            n=motatrouver.count(a)-1
        else:
            a=input("Quelle lettre choisissez vous ?")
            if a==motatrouver:
                w=1
            if a in liste_lettres_demandées:
                print("Lettre déja demandées")
                er=1
            if a not in liste_lettres and w!=1:
                er=1
                print("je vous demander juste une lettre...")
            n=motatrouver.count(a)
        liste_lettres_demandées+=a
        x=0
        if n!=0 and er!=1 and w!=1:
            for j in range(0,n):
                x=motatrouver.find(a,x+1)
                motmystere=motmystere[:x]+a+motmystere[x+1:]
            print(motmystere)
        elif w==1:
            print(motatrouver)
        else:
            fautes+=1
        if motmystere==motatrouver or w==1:
            print("win")
            w=1
        else:
            print("Vous avez le droit encore à ",7-fautes, "fautes")
    if w!=1:
        print("vous êtes vraiment nul! le mot mystère était : ", motatrouver)

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Points : 67
    Points
    67
    Par défaut
    Je serais étonné qu'on rie de toi. Au contraire, j'ai envie d'applaudir: tu essaies de coder par toi-même et de comprendre ce que tu fait. Il n'y a pas de meilleur manière d'apprendre, à mon avis.

    Cela dit, moi aussi j'ai souvent peur qu'on se moque de mon code

  7. #7
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 808
    Points : 7 086
    Points
    7 086
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> [chr(i) for i in range(ord('a'), ord('z')+1)]
    ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> from string import ascii_lowercase as ascii
    >>> ascii
    'abcdefghijklmnopqrstuvwxyz'
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petit soucis de python
    Par Silent-Fart dans le forum Général Python
    Réponses: 19
    Dernier message: 08/01/2010, 20h40
  2. [PHP 5.2] [PHP-JS] petit souci avec une boucle simple
    Par gtraxx dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2009, 15h26
  3. petit soucis lors d'un LOAD DATA INFILE
    Par Jovial dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 04/06/2004, 11h58
  4. Réponses: 6
    Dernier message: 21/01/2004, 13h25
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo