如何用PYTHON解决罗马数字转整数问题

2025-10-27 13:31:26

1、打开JUPYTER NOTEBOOK,新建一个PY文档。

如何用PYTHON解决罗马数字转整数问题

2、I = 1

I + I

我们可以定义变量,但是数据多的时候不现实。

如何用PYTHON解决罗马数字转整数问题

3、d = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}

s = "II"

result = 0

for i in s:

    result = result + d[i]

print(result)

我们先定义一个字典,然后逐个相加。

如何用PYTHON解决罗马数字转整数问题

4、s = "XXVII"

result = 0

for i in s:

    result = result + d[i]

print(result)

s = "IV"

result = 0

for i in s:

    result = result + d[i]

print(result)

但是IV这里是错误的,这是罗马数字的特点。

如何用PYTHON解决罗马数字转整数问题

5、s = "IV"

result = 0

d = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}

if s == "IV":

    print(4)

elif s == "IX":

    print(9)

elif s == "XL":

    print(40)

elif s == "XC":

    print(90)

elif s == "CD":

    print(400)

elif s == "CM":

    print(900)

else:

    for i in s:

        result = result + d[i]

    print(result)

这些就是特殊的时候,但是这样写很复杂。

如何用PYTHON解决罗马数字转整数问题

6、s = "MCMXCIV"

#M = 1000, CM = 900, XC = 90 and IV = 4

#1994

result = 0

d = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}

dd = {"IV": 4, "IX": 9, "XL": 40, "XC": 90, "CD": 400, "CM": 900}

if s in dd:

    print(dd[s])

else:

    for i in s:

        print(i,end=" ")

        result = result + d[i]

    print(result)

查看一下,再设置多一个字典,但是会遇到遍历重复的问题。

如何用PYTHON解决罗马数字转整数问题

7、s = "MCMXCIV"

#M = 1000, CM = 900, XC = 90 and IV = 4

#1994

result = 0

d = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}

dd = {"IV": 4, "IX": 9, "XL": 40, "XC": 90, "CD": 400, "CM": 900}

for i in range(len(s)):

    if s[i:i+2] in dd:

        result = result + dd[s[i:i+2]]

        s = s.strip(s[i:i+2])

    else:

        result = result + d[s[i]]

print(result)

可能会有同学觉得可以减去不要的字符串,但是遍历的i还是会按照顺序遍历的,所以不可行。

如何用PYTHON解决罗马数字转整数问题

8、s = "MCMXCIV"

d = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}

result = 0

for i in range(len(s)):

    if i < (len(s)-1) and d[s[i]] < d[s[i+1]]:

        result = result - d[s[i]]

    else:

        result = result + d[s[i]]

print(result)

其实只要左边的数字比右边的小,那就减去左边的小的数字就可以了。

如何用PYTHON解决罗马数字转整数问题

9、s = "MCMXCIV"

#M = 1000, CM = 900, XC = 90 and IV = 4

#1994

result = 0

d = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}

dd = ["IV", "IX", "XL", "XC", "CD", "CM"]

for i in range(len(s)):

    if s[i:i+2] in dd:

        result -= d[s[i]]

    else:

        result += d[s[i]]

    

print(result)

也可以设置多个列表方便理解,但是会相对比较缓慢。

如何用PYTHON解决罗马数字转整数问题

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢