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 :

erreur programme soundex [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 6
    Par défaut erreur programme soundex
    Bonjour,

    J'ai fait ce programme mais la fonction soundex m'affiche ce message lorsque j'écris ligne 20 chaine1=chaine1+chaine[0]
    TypeError: 'builtin_function_or_method' object is not subscriptable
    alors que le programme marche lorsque je l'ecris séparément

    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
    def sans_accent(chaine) :
     
        accent = ['é', 'è', 'ê', 'à', 'ù', 'û', 'ç', 'ô', 'î', 'ï', 'â']
        sans_accent = ['e', 'e', 'e', 'a', 'u', 'u', 'c', 'o', 'i', 'i', 'a']
        i = 0
        while i < len(accent):
            chaine = chaine.replace(accent[i], sans_accent[i])
            i += 1
        return chaine
     
    def majuscule(chaine) :
     
        chaine=chaine.upper
        return chaine
     
    def soundex(chaine) :
     
        dico_soundex = {"B": "1","C": "2","D": "3","F": "9","G": "7","J": "7","K": "2","L": "4","M": "5","N": "5","P": "1","Q": "2","R": "6","S": "8","T": "3","V": "9","X": "8","Z": "8"}
        chaine1=''
        chaine1=chaine1+chaine[0]
        chaine=chaine[1:]
        for i in chaine:
            for j in dico_soundex.keys():
                if j==i:
                    chaine1=chaine1+dico_soundex[i]
        k=''
        for i in chaine1:
            if i==k:
                s=chaine1.find(i)
                chaine1=list(chaine1)
                chaine1.remove(chaine1[s])
                chaine1="".join(chaine1)
            k=i
        if len(chaine1)>4:
            chaine1=chaine1[:5]
        elif len(chaine1)<4:
            chaine1=chaine1+'0'*(4-len(chaine1))
     
        return chaine1
     
     
    def simplifier(chaine) :
        chaine_sans = sans_accent(chaine)
        chaine_maj = majuscule(chaine_sans)
        code_soundex = soundex(chaine_maj)
        return code_soundex
     
    dicophrases={'Quelle est la Capitale de la Grèce ?': 'Athènes', 'Comment se nomme le magicien du Seigneur des anneaux ?': 'Gandalf', "Qui a composé l'hymne européen ?": 'Beethoven', 'Quel scientifique a créé la théorie de de relativité ?': 'Einstein', 'Comment se nomme le médecin qui suit S. Holmes dans ses aventures ?': 'Watson', 'Quelle marionnette a son nez qui grandit quand elle ment ?': 'Pinocchio'}
    points=0
     
    for i in listephrases :
        a=i.split("\t")
        dicophrases[a[0]]=a[1]
    print(dicophrases)
    for i in dicophrases.keys():
        bonne_reponse=dicophrases[i]
        chaine=input(i)
        chaine=simplifier(chaine)
        bonne_reponse=simplifier(bonne_reponse)
        print(chaine)
        print(bonne_reponse)
        if chaine==bonne_reponse:
            print("Bien joué, c'est une bonne réponse !")
            points=points+1
        else:
            print("Dommage, la bonne réponse était :",dicophrases[i])
    print("Le quizz est terminé !\nVotre score est de :",points,"points !")

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    C'est parce que la fonction majuscule retourne la méthode chaine.upper au lieu de l'appliquer - il manque des () pour appeler/exécuter... -.

    C'est bien de créer des fonctions, mais il ne faut pas oublier de les tester pour vérifier qu'elles fonctionnent avant de les utiliser...
    Travail qui devrait vous faire réfléchir à écrire des fonctions pour rien (majuscule ne fait rien que ne fait déjà la méthode upper) qui compliquent la relecture du code plus qu'autre chose (et prendre le temps de tester...).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Erreur programme en C
    Par Vestigo dans le forum Débuter
    Réponses: 12
    Dernier message: 03/09/2007, 20h52
  2. Erreur programme d'envoi fichier sur serveur ftp
    Par batssa dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2007, 14h30
  3. ERREUR : programme d'installation
    Par shamima-woop dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 05/07/2007, 17h27
  4. Erreur Programmes!!! (ebesoin d'aide)
    Par charfamine dans le forum MFC
    Réponses: 6
    Dernier message: 08/04/2006, 13h16
  5. [MySQL] Erreur programme
    Par Didier100 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/01/2006, 22h12

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