Python で整数をローマ数字に変換する
ローマ数字は、次の 7つの記号を使用して表記されます。
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
これらの記号は、数千の数を表すために使用されます。
ローマ字で 20 を書くには、X
を 2つ使って XX
にします。 しかし、XXXX
は 40 と等しくありません。
40のローマ数字はXL
です。
同様に:
Symbol Value
IV 4
IX 9
XL 40
XC 90
CD 400
CM 900
このチュートリアルでは、Python で整数をローマ数字に変換する方法を説明します。
Python で整数をローマ数字に変換する
以下は、与えられた整数を対応するローマ数字に変換する Python プログラムの実装です。
roman_map = [
(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"),
]
def into_roman(num):
res = ""
while num > 0:
for i, r in roman_map:
while num >= i:
res += r
num -= i
return res
num = int(input("Enter a number: "))
print(into_roman(num))
出力:
Enter a number: 42
XLII
上記の例では、roman_map
に対応する値と記号のリストが含まれています。 res
は空文字列です。
num
の値がゼロより大きい場合、while num > 0
はループを実行します。 ローマ数字にはゼロの記号はありません。
for i, r in roman_map
は、最初の数値が見つかるまで、各 (integer, roman) ペアをループします。
コードの詳細な視覚化については、こちら のコードを実行してください。
Python で除算を使用して整数をローマ数字に変換する
次の例では、除算メソッドを使用して、ユーザーが入力した整数をローマ数字に変換します。
roman_map = {
1: "I",
4: "IV",
5: "V",
9: "IX",
10: "X",
40: "XL",
50: "L",
90: "XC",
100: "C",
400: "CD",
500: "D",
900: "CM",
1000: "M",
}
num = int(input("Enter a number: "))
# 13 integers in descending order
order = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
for i in order:
if num != 0:
quotient = num // i
# prints the roman numeral if the quotient is not zero
if quotient != 0:
for j in range(quotient):
print(roman_map[i], end="")
# update input number with a remainder
num = num % i
出力:
Enter a number: 42
XLII
このアプローチでは、入力整数を 13 の基本整数で降順に分割します。 roman_map
は 13 の整数を含む辞書で、key:value
のペアで対応するローマ数字を含みます。
num
には、ユーザーが入力した整数が格納されます。 order
リストには、13 個の整数が降順で格納されます。
入力数値は、商がゼロでなくなるまで、order
リスト内のすべての数値で除算されます。
商がゼロではなく余りがある場合は、num
で更新されます。 ループは引き続き実行され、同等のローマ数字が得られます。
この リンク で上記のコードを視覚化します。
これで、Python で整数を対応するローマ数字に変換する方法がわかったはずです。 このチュートリアルがお役に立てば幸いです。