Bonjour à tous , je vous contactre aujourd'hui car un problème avec des algorithmes (en python
Voici l'exo:
Code:"Écrivez la fonction test_lettre : def test_lettre(mot, etat, c): """fonction qui vérifie si une lettre apparait dans un mot, et lorsque c'est le cas, ajoute les lettres correspondantes dans l'état. paramètres : - mot, de type chaîne de caractères, - etat, de type liste de caractères : les lettres inconnues sont représentées par des '_'. Cette liste a la même longueur que le paramètre mot, - c, de type caractère : la lettre proposée. retour : "True" si la lettre est présente dans le mot, et False sinon. L'état est mis à jour en remplaçant les "_" correspondant à la lettre trouvée. """ ... Pour ceci, le plus simple est de parcourir les caractères de la chaîne mot : si le caractère est différent du caractère c passé en argument, on continue si le caractère est égal au caractère c passé en argument, le test réussit (la fonction devra donc renvoyer True) et on remplace le '_' correspondant dans la liste etat. Attention, comme le mot peut contenir plusieurs fois la même lettre, il ne faut pas s'areter à la première occurence de c qu'on trouve !
Voila ce que j'ai fais pour le moment ( le prof m'a aidé sur certains points)
1er probleme: quant je veux excuter le prog, je tape dans python shell: test_lettre(mot,e) si je veux tester la lettre e: ça m'écrit que e n'est pas définie. (le programme ci-dessus s'est collé à auche mais il ya normalement des décalages pour rentrer dans les boucles)Code:def test_lettre(mot,lettre_à_tester): etat=["_"]*len(mot) a=False for i in range(len(mot)): if mot[i]==lettre_à_tester: a=True etat[i]=mot[i] print("=>bravo:") else: print("mot :", " ".join(etat)) return mot
2ème exo qui est une modification du premier:
"
Code:correspondance = { 'A': 'AÀÄÂÆ', 'C': 'CÇ', 'E': 'EÊÈÉËÆŒ', 'I': 'IÎÏ', 'O': 'OÔÖŒ', 'U': 'UÙÜÛ' }
Notez en particulier que les lettres doubles ont deux lettres correspondantes.
Modifier la fonction test_lettre pour qu'elle prenne les accents et lettres doubles en compte.
Pour ceci, il suffit de modifier le test qui vérifie si le ième caractère de mot est égal à c par un test qui vérifie si le ième caractère du mot apparaît dans la chaîne contenant toutes les variantes du c. (Attention, certains caractères n'ont aucune variante et n'apparaissent donc pas dans le dictionnaire correspondance.)"
La je ne sais pas comment faire pour le programme prenne en compte "correspondance" et qu'il affiche si besoin , les lettres avec les accents.
merci beaucoup pour votre aide
-----