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

假设我们有一个罗马数字;我们必须将其转换为数字。众所周知,罗马数字从左到右从大到小由符号表示,唯一的例外是比符号少一个。罗马数字符号的一些含义如下:

  • 'M':1000

  • 'D':500

  • 'C':100

  • 'L':50

  • 'X':10

  • 'V':5

  • '我':1

因此,如果输入像数字=“ MCLXVI”,那么输出将为1166,因为M = 1000,C = 100,总计为1100,则L = 50,X = 10,VI = 6,所以总计为1166。

为了解决这个问题,我们将按照以下步骤操作:

如上 获取数字列表

  • 回答:= 0

  • n:=数字大小

  • 对于每个索引idx和值c的数字,执行

    • ans:= ans + d [c]

    • ans:= ans-d [c]

    • 如果idx <n-1并且d [c] <d [numeral [idx + 1]],则

    • 除此以外,

    • 返回ans

    让我们看下面的实现以更好地理解:

    示例

    class Solution:
       def solve(self, numeral):
          d = {"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1}
          ans = 0
          n = len(numeral)
          for (idx, c) in enumerate(numeral):
             if idx < n - 1 and d[c] < d[numeral[idx + 1]]:
                ans -= d[c]
             else:
                ans += d[c]
          return ans
    
    ob = Solution()numeral = "MCLXVI"
    print(ob.solve(numeral))

    输入值

    "MCLXVI"

    输出结果

    1166