python阿拉伯数字转罗马数字,python中将数字转换为中文

  python阿拉伯数字转罗马数字,python中将数字转换为中文

  以下罗马数字包含以下七个字符:I、V、X、L、C、D和m。

  字符数值

  我1

  第五版

  X 10

  L 50

  C 100

  D 500

  M 1000

  比如罗马数字2写成II,就是两个并列的1。12写成X II,也就是XII。27写成XXVII,也就是XX V II。

  通常,罗马数字中的小数字在大数字的右边。但也有特例,比如4不是写成IIII,而是IV。数字1在数字5的左边,表示的数字等于大数字5减去数字1得到的数字4。类似地,数字9表示为IX。这一特殊规则仅适用于以下六种情况:

  我可以放在V (5)和X (10)的左边代表4和9。

  x可以放在L (50)和C (100)的左边,代表40和90。

  c可以放在D (500)和M (1000)的左边,分别代表400和900。

  给定一个罗马数字,将其转换为整数。确保输入在1到3999的范围内。

  示例1:

  输入:“III”

  输出:3

  示例2:

  输入:“IV”

  输出:4

  示例3:

  输入:“IX”

  产出:9

  示例4:

  输入:“LVIII”

  产量:58

  解释:L=50,V=5,III=3。

  示例5:

  输入:“MCMXCIV”

  产量:1994年

  解释:M=1000,CM=900,XC=90,IV=4。

  思考解决问题:

  看到文字和数字的意义构成,首先想到的应该是字典,它远比其他存储方式方便。

  A={I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000}然后再看特殊情况。在某些特殊情况下,已知数字会在大数字前面,然后两个数字的组合就变成最后一个数字减去前一个数字。

  IV=5-1=4

  XL=50 - 10=40

  厘米=1000- 100=900。

  这时候可以通过另一种方法来实现,就是比较当前号码和下一个号码的大小。如果当前数字小于后面的数字,则首先减去前面较小的数字,然后在下一次遍历中加上后面较大的数字,例如

  定义一个数的总和sum=0,

  判断IV,I小于v,则sum的计算过程为-1 5=4,其他组合以此类推。

  如果前面的数大于后面的数,则执行正常加法。最后,附上完整的代码:

  类解:def romance (self,s: str)-int: 这里是作者自己的愚蠢。我想到的第一件事就是遍历判断,顺便说一句,张贴它来提醒自己, 提醒大家不要犯这样的错误 # b=0 # for I in s:# if I= I :# b=1 # elifi== v :# b=5 # elifi== x :# b=10 # elifi== l elif I== C :# b=100 # elif I== D :# b=500 # elif I== M :# b=1000 # return b a={ I :1, V:5, X:10, L:50, C:100, D:500,M :1000 } b=0 for I in range(len(s)-1):#在这里遍历字符串时,我选择了遍历每个字符的下标,为了防止下标超出,遍历到len(s)-1 if a[s[i]]=a[s[i 1]]: #如果前面大于后面,正常添加。 b=a[s[i]] else: b -=a[s[i]]#如果前面大于后面,减去当前值B=a[s[Return BIF _ _ name _ _= _ _ main _ _ :s=solution()print(s . Roman point( cm ))本文到此结束。希望对你有帮助。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: