Umwandlung int in Zahl mit römische Ziffern

Ein Programmierbeispiel, mit dem ein int-Wert zwischen 0 und 4000 in eine Zahl mit römischen Ziffern umgewandelt werden kann.


def romanize(decimal_number):
"""
   Wandelt die gegebene int-Zahl im Bereich 0 bis 4000 in eine Zahl mit römischen Ziffern um.
"""

    if not isinstance(decimal_number, int) or decimal_number <= 0 or decimal_number >= 4000:         raise ValueError()
    result = ''     count_m = decimal_number // 1000
    if count_m > 0:         result += count_m * 'M'         decimal_number = decimal_number - (count_m * 1000)
    if decimal_number >= 900:         result += 'CM'         decimal_number = decimal_number - 900
    count_c = decimal_number // 100
    if count_c > 0:         if count_c >= 5:             c = count_c - 5             result += 'D' + c * 'C'         elif count_c == 4:             result += 'CD'         else:             result += count_c * 'C'         decimal_number = decimal_number - (count_c * 100)
    if decimal_number >= 90:         result += 'XC'         decimal_number = decimal_number - 90
    count_x = decimal_number // 10
    if count_x > 0:         if count_x >= 5:             x = count_x - 5             result += 'L' + x * 'X'         elif count_x == 4:             result += 'XL'         else:             result += count_x * 'X'         decimal_number = decimal_number - (count_x * 10)
    if decimal_number >= 9:         result += 'IX'         decimal_number = decimal_number - 90
    if decimal_number > 0:         if decimal_number >= 5:             i = decimal_number - 5             result += 'V' + i * 'I'         elif decimal_number == 4:             result += 'IV'         else:             result += decimal_number * 'I'     return result

print(romanize(1939)) print(romanize(1954)) print(romanize(1981)) print(romanize(2023))

Ausgabe:

MCMXXXIX
MCMLIV
MCMLXXXI
MMXXIII