Même si le tri fusion est au programme de terminale, l'exercice est sans doute difficile. On rappelle que pour fusionner deux listes déjà triées, on peut :
parcourir les deux listes en comparant leurs éléments, le plus petit est placé dans la liste fusion et on progresse dans le parcours de la liste correspondante
lorsque la fin d'une deux listes est atteinte on complète avec les éléments de l'autre.
Exercice 2
Bug
Il y a des différences notables (indentation, lignes, ....) entre le code python qui figure sur le sujet au format pdf et le code python fourni avec le sujet sous forme d'un fichier .py
1 2 3 4 5 6 7 8 9101112131415161718
defrom_to_dec(nombre):""" Renvoie l’écriture décimale du nombre donné en chiffres romains """dico={"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}#(1)iflen(nombre)==1:returndico[nombre]#(2)else:### on supprime le premier caractère de la chaîne contenue dans la variable nombre### et cette nouvelle chaîne est enregistrée dans la variable nombre_droitenombre_droite=nombre[1:]ifdico[nombre[0]]>=dico[nombre[1]]:returndico[nombre[0]]+rom_to_dec(nombre_droite)#(3)else:returnrom_to_dec(nombre_droite)-dico[nombre[0]]#(4)
On complète avec les valeurs des chiffres romains (données dans l'énoncé).
Si le nombre contient un unique chiffre, on renvoie sa valeur.
Ici, il faut ajouter la valeur de la première lettre car elle est supérieure à la valeur de la lettre suivante.
Ici, il faut soustraire car elle est inférieure à la valeur de la lettre suivante.
Attention
Le sujet utilise les slices (nombre_droite = nombre[1:]) qui ne sont pas au programme.
Commentaire
Même si le tri fusion est au programme de terminale, l'exercice est sans doute difficile. On rappelle que pour fusionner deux listes déjà triées, on peut :