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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。