ローマ数字への数値変換方法


ローマ数字は、古代ローマで使用されていた数え方であり、現代でも特定の文脈で使用されています。以下に、数値をローマ数字に変換する方法といくつかのコード例を示します。

方法1: ループを使用した変換

def convert_to_roman(num):
    roman_numerals = {
        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'
    }

    roman = ''

    for value, numeral in roman_numerals.items():
        while num >= value:
            roman += numeral
            num -= value

    return roman

この関数では、辞書 roman_numerals を使用して数値と対応するローマ数字を定義します。その後、入力された数値 num をループで処理し、対応するローマ数字を roman 文字列に追加します。最終的に、変換されたローマ数字を返します。

方法2: 再帰を使用した変換

def convert_to_roman(num):
    roman_numerals = [
        (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')
    ]

    if num == 0:
        return ''

    for value, numeral in roman_numerals:
        if num >= value:
            return numeral + convert_to_roman(num - value)

この関数では、タプルのリスト roman_numerals を使用して数値と対応するローマ数字を定義します。関数は再帰的に呼び出され、入力された数値 num から最大のローマ数字を引き、そのローマ数字を返します。再帰呼び出しは、数値が0になるまで続きます。

これらのコード例を使用すると、以下のように数値をローマ数字に変換できます。

num = 1234
converted_num = convert_to_roman(num)
print(converted_num)  # 結果: MCCXXXIV

以上が、数値をローマ数字に変換する方法とコード例です。これを参考にして、自分のプロジェクトや課題で応用してみてください。