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 :

Programme Motus problème lettres mal placées/inexistantes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 1
    Par défaut Programme Motus problème lettres mal placées/inexistantes
    Salut ! Je suis nouveau sur le forum et j'ai besoin de vous : en effet, je dois rédiger le programme Python du célèbre jeu télévisé Motus.

    Or il y a un hic dans mon programme : par exemple, si le mot à trouver est "salazar" et que je rentre "saaaaaa", les 'a' bien placés seront écrits en majuscules mais les a qui n'ont pas lieu d'être seront seulement considérés comme mal placés alors qu'ils devraient être considérés comme en trop...

    Je vous fais suivre mon programme :
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    import os
    import time
     
     
    dictionnaire = {}
    #mots7lettres.py
    #24/02/2018
     
    fic = open("H:\CLE USB\ESTP\INFO ESTP\mots7lettres.txt", "r")
     
    texte = fic.read()
    fic.close
     
     
    import random
    random.choice(texte)
    liste_mots = texte.split(",")
     
     
     
     
     
    def mot_à_trouver():
        echantillon = random.sample(liste_mots,1)
        for i in range(len(echantillon)-1,-1,-1) :
            ligne = echantillon[i].strip()
            if (' ' in ligne) :
                print(i)
                liste_mots.pop(i)
        A=list(echantillon[0])
        A=correction_du_mot_minuscule(A)
        return A
     
    def correction_minuscule(lettre):
        L1=['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','a','a','a','a','c','e','e','e','e','i','i','o','o','o','u','u','u']
        L2=['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','à','â','ä','ã','ç','é','è','ê','ë','î','ï','ö','ô','õ','ù','û','ü']
        for k in range (len(L1)):
            if L2[k]==lettre:
                return(L1[k])
     
    def correction_majuscule(lettre):
        L1=['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','A','A','A','A','C','E','E','E','E','I','I','O','O','O','U','U','U']
        L2=['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','à','â','ä','ã','ç','é','è','ê','ë','î','ï','ö','ô','õ','ù','û','ü']
        for k in range (len(L1)):
            if L2[k]==lettre:
                return(L1[k])
     
    def correction_du_mot_minuscule(list_mot):
        mot=[]
        for k in list_mot :
            k=correction_minuscule(k)
            mot.append(k)
        return mot
     
     
    def correction_du_mot_majuscule(list_mot):
        mot=[]
        for k in list_mot :
            k=correction_majuscule(k)
            mot.append(k)
        return mot
     
    import sys
     
    def comparaison_de_mot(mot_1,mot_2):
        R=list(mot_1)
        R==correction_du_mot_minuscule(R)
        A=mot_2
        L=[]
        if R == ['Q'] :
            print("Merci d'avoir joué! A bientôt!")
            sys.exit(0)
        if len(R) > 7 or len(R) < 7 :
            print("Vous n'avez pas rentré un mot à 7 lettres. Réessayez")
            nouveau_mot = input("Essayez un mot à 7 lettres:")
            R=list(nouveau_mot)
        for i in range(0, len(R)):
     
     
            if R[i]==A[i]:
                    L.append(correction_majuscule(A[i]))
                    Liste_avancé[i]=L[i]
            elif R[i] in A[:i]+A[i+1:]:
                    L.append(R[i])
            elif R[i] not in A[i] :
                    L.append('-')
     
     
        return (L,Liste_avancé)
     
     
    def probleme(L_comparee) :
        compteur = 0
        for i in range(len(L_comparee)) :
        if L_comparee[i] = correction_du_mot_majuscule(L_comparee(i)) :
     
     
     
     
     
    print ("Bienvenue dans motus veuillez taper votre première proposition !")
    print("Rentrer Q pour quitter le jeu à tout moment")
    A="salazar"
    Liste_avancé=[correction_majuscule(A[0]),'-','-','-','-','-','-']
    print ("mot à trouver:", "".join(Liste_avancé))
    nombre_essai=0
    lettre_bien_placée = 0
    while nombre_essai<=4 and '-' in Liste_avancé:
        time.sleep(2.0)
        nombre_essai+=1
        L_comparée,Liste_avancé=comparaison_de_mot(input("entrer proposition:"),A)
     
     
        time.sleep(2.0)
        print('Mot retourné :',"".join(L_comparée))
        time.sleep(2.0)
        print("Mot en cours:","".join(Liste_avancé))
        if nombre_essai<=4 and '-' in Liste_avancé :
            print("il vous reste", 5-nombre_essai,"essai(s)")
    if nombre_essai==5 and '-' in Liste_avancé :    
        print('PERDU')
        print("Le mot caché était:",A)
    if '-' not in Liste_avancé:
        print('GAGNE')



    Merci beaucoup !!

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Utilise les balises [CODE] car là c'est inbuvable !
    Pour ca lorsque tu écris ton message, avant d'insérer ton code tu clique sur le bouton avec le #.

    Et puis sinon là à vue de nez on ne peut pas faire tourner le code car on n'a pas le fichier. Donc plutot que de fournir tout un choix de mot comme ça parmi un fichier, fait nous un exemple dans lequel directement le mot à trouver est salazar par exemple.

    Ensuite tu as l'air de t'embrouiller entre les caractères accentués ou non, à la fois en majuscule et minuscule. Bon le mieux serait d'avoir ton fichier d'entrée sans aucun caractère accentué. Sinon tu peux utiliser déjà des choses toute faite plutot que de réinventer la roue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import unicodedata
     
    chaine = "mà chàîne âvèc dès càräctère spéciâüx"
    chaine = unicodedata.normalize('NFKD', chaine).encode('ASCII', 'ignore')
    print(chaine)

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    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 : 4 064
    Par défaut
    Citation Envoyé par berthotho
    si le mot à trouver est "salazar" et que je rentre "saaaaaa", les 'a' bien placés seront écrits en majuscules mais les a qui n'ont pas lieu d'être seront seulement considérés comme mal placés alors qu'ils devraient être considérés comme en trop...
    Euh sur le principe, certains a pour moi sont mal placés, mais pas en trop.

    Citation Envoyé par berthotho
    import os
    import time


    dictionnaire = {}
    #mots7lettres.py
    #24/02/2018

    fic = open("H:\CLE USB\ESTP\INFO ESTP\mots7lettres.txt", "r")

    texte = fic.read()
    fic.close


    import random
    random.choice(texte)
    liste_mots = texte.split(",")





    def mot_à_trouver():
    echantillon = random.sample(liste_mots,1)
    for i in range(len(echantillon)-1,-1,-1) :
    ligne = echantillon[i].strip()
    if (' ' in ligne) :
    print(i)
    liste_mots.pop(i)
    A=list(echantillon[0])
    A=correction_du_mot_minuscule(A)
    return A

    def correction_minuscule(lettre):
    L1=['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','a','a','a','a','c','e','e','e','e','i','i','o','o','o','u','u','u']
    L2=['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','à','â','ä','ã','ç','é','è','ê','ë','î','ï','ö','ô','õ','ù','û','ü']
    for k in range (len(L1)):
    if L2[k]==lettre:
    return(L1[k])

    def correction_majuscule(lettre):
    L1=['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','A','A','A','A','C','E','E','E','E','I','I','O','O','O','U','U','U']
    L2=['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','à','â','ä','ã','ç','é','è','ê','ë','î','ï','ö','ô','õ','ù','û','ü']
    for k in range (len(L1)):
    if L2[k]==lettre:
    return(L1[k])

    def correction_du_mot_minuscule(list_mot):
    mot=[]
    for k in list_mot :
    k=correction_minuscule(k)
    mot.append(k)
    return mot


    def correction_du_mot_majuscule(list_mot):
    mot=[]
    for k in list_mot :
    k=correction_majuscule(k)
    mot.append(k)
    return mot

    import sys

    def comparaison_de_mot(mot_1,mot_2):
    R=list(mot_1)
    R==correction_du_mot_minuscule(R)
    A=mot_2
    L=[]
    if R == ['Q'] :
    print("Merci d'avoir joué! A bientôt!")
    sys.exit(0)
    if len(R) > 7 or len(R) < 7 :
    print("Vous n'avez pas rentré un mot à 7 lettres. Réessayez")
    nouveau_mot = input("Essayez un mot à 7 lettres:")
    R=list(nouveau_mot)
    for i in range(0, len(R)):


    if R[i]==A[i]:
    L.append(correction_majuscule(A[i]))
    Liste_avancé[i]=L[i]
    elif R[i] in A[:i]+A[i+1:]:
    L.append(R[i])
    elif R[i] not in A[i] :
    L.append('-')


    return (L,Liste_avancé)


    def probleme(L_comparee) :
    compteur = 0
    for i in range(len(L_comparee)) :
    if L_comparee[i] = correction_du_mot_majuscule(L_comparee(i)) :





    print ("Bienvenue dans motus veuillez taper votre première proposition !")
    print("Rentrer Q pour quitter le jeu à tout moment")
    A="salazar"
    Liste_avancé=[correction_majuscule(A[0]),'-','-','-','-','-','-']
    print ("mot à trouver:", "".join(Liste_avancé))
    nombre_essai=0
    lettre_bien_placée = 0
    while nombre_essai<=4 and '-' in Liste_avancé:
    time.sleep(2.0)
    nombre_essai+=1
    L_comparée,Liste_avancé=comparaison_de_mot(input("entrer proposition:"),A)


    time.sleep(2.0)
    print('Mot retourné :',"".join(L_comparée))
    time.sleep(2.0)
    print("Mot en cours:","".join(Liste_avancé))
    if nombre_essai<=4 and '-' in Liste_avancé :
    print("il vous reste", 5-nombre_essai,"essai(s)")
    if nombre_essai==5 and '-' in Liste_avancé :
    print('PERDU')
    print("Le mot caché était:",A)
    if '-' not in Liste_avancé:
    print('GAGNE')


    Et là démerdez-vous en gros !

    Allez sérieusement, où se trouve la fonction traitant de ton problème, avec ce qu'elle prend en paramètre(s) et ce qu'elle devrait retourner ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2007, 15h45
  2. Problème caractère "?" à la place des "é"
    Par breton75 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/02/2007, 16h43
  3. Problème mise en place Apache avec mod_ssl
    Par Le fut dans le forum Apache
    Réponses: 3
    Dernier message: 19/12/2006, 14h04
  4. Sérieux problème matrice mal conditionné
    Par maamar dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 29/05/2005, 23h57

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