Adloun

Python (école d'ingénieur) · Chapitre 1 · Exercice

Conversion de nombres romains

Bases de Python, variables et types

Énoncé

Écrire une fonction romain_vers_entier(romain) qui convertit un nombre écrit en chiffres romains (I, V, X, L, C, D, M) en entier, et sa réciproque entier_vers_romain(n).

Corrigé

def romain_vers_entier(romain):
    valeurs = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
    total = 0
    precedent = 0
    for char in reversed(romain):
        valeur = valeurs[char]
        if valeur < precedent:
            total -= valeur
        else:
            total += valeur
        precedent = valeur
    return total

def entier_vers_romain(n):
    valeurs = [
        (1000, 'M'), (900, 'CM'), (500, 'D'), (400, 'CD'),
        (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'),
        (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')
    ]
    resultat = []
    for valeur, symbole in valeurs:
        while n >= valeur:
            resultat.append(symbole)
            n -= valeur
    return ''.join(resultat)

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →