11ROMAN = [
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" ),
827]
28+
29+
930def roman_to_int (roman ):
1031 """
1132 Convert a Roman numeral to an integer, supporting Vinculum notation
@@ -26,13 +47,15 @@ def roman_to_int(roman):
2647
2748 i , total = 0 , 0
2849 while i < len (roman ):
29- if i + 1 < len (roman ) and roman [i : i + 2 ] in vals :
30- total += vals [roman [i : i + 2 ]]
50+ if i + 1 < len (roman ) and roman [i : i + 2 ] in vals :
51+ total += vals [roman [i : i + 2 ]]
3152 i += 2
3253 else :
3354 total += vals [roman [i ]]
3455 i += 1
3556 return total
57+
58+
3659def int_to_roman (number ):
3760 """
3861 Convert an integer to a Roman numeral, supporting Vinculum notation
@@ -55,7 +78,9 @@ def int_to_roman(number):
5578 if number == 0 :
5679 break
5780 return "" .join (result )
58-
81+
82+
5983if __name__ == "__main__" :
6084 import doctest
85+
6186 doctest .testmod ()
0 commit comments