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

时间:2024-10-15 06:12:05

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

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

2、I = 1I + I我们可以定义变量,但是数据多的时候不现实。

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

3、d = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}s = "II"result = 0for i in s: result = result + d[i]print(result)我们先定义一个字典,然后逐个相加。

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

4、s = "XXVII"result = 0for i in s: result = result + d[i]print(result)s = "IV"result = 0for i in s: result = result + d[i]print(result)但是IV这里是错误的,这是罗马数字的特点。

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

5、s = "IV"re衡痕贤伎sult = 0d = {"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#1994result = 0d = {"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#1994result = 0d = {"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 = 0for 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#1994result = 0d = {"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解决罗马数字转整数问题
© 手抄报圈