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

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

假设我们有一个数字num。我们必须将其转换为相应的罗马数字。罗马数字包含以下符号和值 −

  • “I” = 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。

要解决此问题,我们将采取以下步骤 −

  • res:= 空字符串
  • table = 包含以此格式的配对(val,symbol)列表,其中val是值,symbol是相关符号[(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”)]
  • 对于表中的每个对(cap,roman),进行以下操作 −
    • d:= num / cap的地板数
    • m:= num mod cap
    • res:= res + roman * d
    • num:= m
  • 返回res

示例

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程