在 Python 中将整数转换为罗马数字的程序

假设我们有一个数字 num。我们必须将其转换为等效的罗马数字。罗马数字包含如下符号和值 -

  • “我”= 1

  • “V”= 5

  • “X”= 10

  • “L”= 50

  • “C”= 100

  • “D”= 500

  • “M” = 1000

这些符号通常按从大到小、从左到右的顺序书写,并且可以通过将所有符号的值相加来计算。但也有一些特殊情况,低值符号在高值符号的左边,表示高值减去低值。

这些是这种情况的例子 -

  • “I”在“V”之前,值为 4。

  • “I”在“X”之前,值为 9。

  • “X”在“L”之前,值为 40。

  • “X”在“C”之前,值为 90。

  • “C”在“D”之前,值为 400。

  • “C”在“M”之前,值为 900。

在罗马数字中也有一些规则 -

  • 没有符号重复超过 3 次。

  • 符号“V”、“L”和“D”不再重复。

因此,如果输入像 n = 1520,那么输出将是“MDXX”,因为“MDXX”表示 1000 + 500 + 10 + 10 = 1520。

示例

让我们看看以下实现以获得更好的理解 -

def solve(num):
   res = ""
   table = [
      (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"),
   ]
   for cap, roman in table:
      d, m = divmod(num, cap)
      res += roman * d
      num = m

   return res

num = 1520
print(solve(num))

输入

1520
输出结果
MDXX

猜你喜欢