bonsoir,
j'ai l'énoncé suivant :
Énoncé
Écrire une fonction trans(text, replaceA, replaceB), qui reçoit trois paramètres:
text : une chaîne de caractères
replaceA : un couple (oldA, newA)oldA est un caractère et newA un texte
replaceB : un couple (oldB, newB)oldB est un caractère et newB un texte
et qui renvoie le résultat de la transformation suivante : chaque occurrence du symbole oldA dans la chaîne text est remplacée par la chaîne newA, et simultanément chaque occurrence du symbole oldB est remplacée par la chaîne newB.
Pour simplifier, vous pouvez supposer que oldA est différent de oldB.
Exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
>>> print(trans('ABBAB', ('A','AB'), ('B','BA')))
>>> 'ABBABAABBA'
j'ai codé ces lignes :
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
def isprefixe(texte,mot,i):
    """Vérifie si mot a une occurrence dans texte en position i"""
    B = True
    j = 0
    while (j < len(mot)) and B:
        if texte[i + j] != mot[j]:
            B = False
        j += 1
    return B
 
def cherche_occurrences(texte, mot):
    """Donne la liste de toutes les occurrences de mot dans texte"""
    occ = []  # liste des occurrences
    for i in range(len(texte) - len(mot) + 1):
        if isprefixe(texte, mot, i):
            occ.append(i)
    return occ
 
 
replaceA=("","")
replaceB=("","")
def trans(text, replaceA, replaceB):
    print(text)
    """Donne la liste de toutes les occurrences de mot dans texte"""
    occ1=cherche_occurrences(text,replaceA[0])
    occ2 =cherche_occurrences(text,replaceB[0])
    # liste des occurrences
    if(replaceA[0]!=replaceB[0]):
        print(occ1)
        for i in range(len(occ1)- 1):
            text = replaceA[1] + text[occ1[i]+1:]
            for j in range(len(occ2)-1):
                text = replaceB[1] + text[occ2[j]+1:]
    return text
 
 
print(trans('chicane', ('c', 'KH'), ('i', 'ii')))
mais le résultat qu'il donne pour trans('chicane', ('c', 'KH'), ('i', 'ii'))) est le suivant : KHhicane alors que la résultat attendu est : KHhiiKHane.