roman_symbol = [ [ "IV", 4 ], [ "IX", 9 ], [ "XL", 40 ], [ "XC", 90 ], [ "CD", 400 ], [ "CM", 900 ], [ "I", 1 ], [ "V", 5 ], [ "X", 10 ], [ "L", 50 ], [ "C", 100 ], [ "D", 500 ], [ "M", 1000] ] # Convert an integer to its roman representation as string def int_to_roman(i): s = "" for rs in sorted(roman_symbol, key=lambda x: x[1], reverse=True): count = i // rs[1] s += rs[0] * count if count > 0: i %= rs[1] * count return s # Convert a roman number to its integer value; return 0 on error def roman_to_int(s): i = 0 su = s.upper() while len(su) > 0: for rs in roman_symbol: if su.startswith(rs[0]): break else: return 0 i += rs[1] su = su.removeprefix(rs[0]) if s.upper() != int_to_roman(i): return 0 return i