HOWTO · Python

Python에서 정수를 로마 숫자로 변환

이 튜토리얼은 Python에서 정수를 로마 숫자로 변환하는 방법을 알려줍니다.

이 페이지의 내용

로마 숫자는 다음 7개의 기호를 사용하여 씁니다.

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

이 기호는 수천 개의 숫자를 나타내는 데 사용됩니다.

로마자로 20을 쓰려면 두 개의 X를 사용하여 XX를 만들 수 있습니다. 그러나 XXXX는 40과 같지 않습니다.

40의 로마 숫자는 XL입니다.

비슷하게:

Symbol       Value
IV             4
IX             9
XL             40
XC             90
CD             400
CM             900

이 튜토리얼은 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는 빈 문자열입니다.

while num > 0은 num 값이 0보다 큰 경우 루프를 실행합니다. 로마 숫자에는 0을 나타내는 기호가 없습니다.

for i, r in roman_map은 첫 번째 숫자를 찾을 때까지 각 (정수, 로마자) 쌍을 반복합니다.

코드를 자세히 시각화하려면 여기에서 코드를 실행하세요.

나눗셈을 사용하여 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은 key:value 쌍에 상응하는 로마 숫자와 함께 13개의 정수를 포함하는 사전입니다.

num은 사용자가 입력한 정수를 저장합니다. order 목록은 13개의 정수를 내림차순으로 저장합니다.

입력 숫자는 몫이 0이 될 때까지 order 목록의 모든 숫자로 나뉩니다.

몫이 0이 아니고 나머지가 있으면 num으로 업데이트됩니다. 루프는 계속 실행되고 로마 숫자에 해당하는 값을 얻습니다.

이 링크에서 위의 코드를 시각화하십시오.

이제 Python에서 정수를 로마 숫자로 변환하는 방법을 알아야 합니다. 이 튜토리얼이 도움이 되었기를 바랍니다.