1
1
ROMAN = [
2
- (1000000 , "M_" ), (900000 , "C_M_" ), (500000 , "D_" ), (400000 , "C_D_" ),
3
- (100000 , "C_" ), (90000 , "X_C_" ), (50000 , "L_" ), (40000 , "X_L_" ),
4
- (10000 , "X_" ), (9000 , "I_X_" ), (5000 , "V_" ), (4000 , "I_V_" ),
5
- (1000 , "M" ), (900 , "CM" ), (500 , "D" ), (400 , "CD" ),
6
- (100 , "C" ), (90 , "XC" ), (50 , "L" ), (40 , "XL" ),
7
- (10 , "X" ), (9 , "IX" ), (5 , "V" ), (4 , "IV" ), (1 , "I" )
2
+ (1000000 , "M_" ),
3
+ (900000 , "C_M_" ),
4
+ (500000 , "D_" ),
5
+ (400000 , "C_D_" ),
6
+ (100000 , "C_" ),
7
+ (90000 , "X_C_" ),
8
+ (50000 , "L_" ),
9
+ (40000 , "X_L_" ),
10
+ (10000 , "X_" ),
11
+ (9000 , "I_X_" ),
12
+ (5000 , "V_" ),
13
+ (4000 , "I_V_" ),
14
+ (1000 , "M" ),
15
+ (900 , "CM" ),
16
+ (500 , "D" ),
17
+ (400 , "CD" ),
18
+ (100 , "C" ),
19
+ (90 , "XC" ),
20
+ (50 , "L" ),
21
+ (40 , "XL" ),
22
+ (10 , "X" ),
23
+ (9 , "IX" ),
24
+ (5 , "V" ),
25
+ (4 , "IV" ),
26
+ (1 , "I" ),
8
27
]
28
+
29
+
9
30
def roman_to_int (roman ):
10
31
vals = {roman : arabic for arabic , roman in ROMAN }
11
32
i , total = 0 , 0
@@ -17,6 +38,8 @@ def roman_to_int(roman):
17
38
total += vals [roman [i ]]
18
39
i += 1
19
40
return total
41
+
42
+
20
43
def int_to_roman (number ):
21
44
if not isinstance (number , int ) or number <= 0 :
22
45
raise ValueError ("Input must be a positive integer greater than 0" )
@@ -28,7 +51,9 @@ def int_to_roman(number):
28
51
if number == 0 :
29
52
break
30
53
return "" .join (result )
31
-
54
+
55
+
32
56
if __name__ == "__main__" :
33
57
import doctest
58
+
34
59
doctest .testmod ()
0 commit comments