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