Dans cet exercice, nous voulons créer une fonction qui permettra de réaliser la conversion d'un nombre romain (par exemple "VI"
) en un nombre entier (dans notre exemple 6
).
La fonction conversion_romain_entier
est donc constituée d'un paramètre qui récupère le nombre romain sous la forme d'une chaîne de caractère (str
) et elle doit renvoyer le résultat de la conversion par un nombre entier (int
).
Voici la liste des symboles romains acceptés :
- Le symbole
I
est égal à la valeur1
. - Le symbole
V
est égal à la valeur5
. - Le symbole
X
est égal à la valeur10
. - Le symbole
L
est égal à la valeur50
. - Le symbole
C
est égal à la valeur100
. - Le symbole
D
est égal à la valeur500
. - Le symbole
M
est égal à la valeur1000
.
Exemples d'utilisation
>>> conversion_romain_entier("III")
3
>>> conversion_romain_entier("IV")
4
>>> conversion_romain_entier("CXLIX")
149
def conversion_romain_entier(rom_number): ref = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000} converted = [ref.get(i) for i in rom_number][::-1] temp_value = 0 total = 0 for i in converted: if i > temp_value or i == temp_value: total += i temp_value = i else: total -= i return total
Puco

#Le symbole I est égal à la valeur 1. #Le symbole V est égal à la valeur 5. #Le symbole X est égal à la valeur 10. #Le symbole L est égal à la valeur 50. #Le symbole C est égal à la valeur 100. #Le symbole D est égal à la valeur 500. #Le symbole M est égal à la valeur 1000. valeur_symbole = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000} # variable qui va contenir le nombre romain chiffre_romain = "" # variable qui va devenir le nombre arabe chiffre_arabe = 0 # variable qui retient lors du déchiffrage du nombre romain le dernier nombre, pour ainsi traité les cas particuliers(comme IX) last_number = 9999999999999999999999999999999999999999 # fonction qui va convertir le chiffre romain en chiffre arabe def convert(chiffre_romain, chiffre_arabe, valeur_symbole, last_number): # on demande à l'utilisateur de rentrer un chiffre romain chiffre_romain = input(">") for i in chiffre_romain: if last_number < valeur_symbole[i]: chiffre_arabe = chiffre_arabe - last_number chiffre_arabe = chiffre_arabe + valeur_symbole[i] chiffre_arabe = chiffre_arabe - last_number last_number = valeur_symbole[i] else: chiffre_arabe += valeur_symbole[i] last_number = valeur_symbole[i] print(chiffre_arabe) while True: convert(chiffre_romain, chiffre_arabe, valeur_symbole, last_number)
Jérôme

ROMANS_NUMBERS = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000} def conversion_romain_entier(nombre_romain: str) -> int: # Insérer votre code ci-dessous. total = None last_number_val = None for i in nombre_romain: current_val = ROMANS_NUMBERS[i] if total: if current_val > last_number_val: total += current_val-(last_number_val*2) else: total += current_val else: total = current_val last_number_val = current_val return total
Euphorik

def conversion_romain_entier(nombre_romain: str) -> int: # Insérer votre code ci-dessous. dico_chiffre_romain = {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000} liste_chiffre_romain = [] for i, lettre in enumerate(nombre_romain): liste_chiffre_romain.append(dico_chiffre_romain[lettre]) if liste_chiffre_romain[i] > liste_chiffre_romain[i-1]: liste_chiffre_romain[i-1] *= -1 return sum(liste_chiffre_romain) nombre_converti = conversion_romain_entier("MCMXCIX") print(nombre_converti)
Romu80

def conversion_romain_entier(nombre_romain: str) -> int: # Insérer votre code ci-dessous.
Un instant...
Test pour un simple symbole
La fonction doit être capable de convertir un simple symbole.
Test de conversion avec différents symboles
La fonction doit être capable de convertir des nombres romains avec différents symboles.
Test de conversion avec des cas particulier
La fonction doit être capable de convertir certains cas particulier.
Bravo, tu as réussi cet exercice de code 🥳

Soumettre ma solution
Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇
Seules les propositions différentes de la solution proposée par Docstring peuvent être envoyées.
Ma solution :
Mes notes
Sauvegardé