罗马数字转阿拉伯数字

罗马数字转阿拉伯数字

1.罗马数字是位置计数吗?它的缺点是什么?

答:罗马数字不是位置技术,他的缺点:书写困难,规则繁杂,没有数字0

罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。(python)

字符          数值

I             1

V             5

X             10

L             50

C             100

D             500

M             1000

2.将学号20191210转为罗马数字(因罗马数字没有0,用空格表示)

2 -----> II
0 ----->
1 -----> I
9 -----> IX
1 -----> I
2 -----> II
1 -----> I
0----- >

代码如下:

def transform_alabo2_roman_num(one_num):

num_list=[1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]

str_list=["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]

res=‘‘

for i in range(len(num_list)):

while one_num>=num_list[i]:

one_num-=num_list[i]

res+=str_list[i]

return res

def transform_roman_num2_alabo(one_str):

‘‘‘‘‘

将罗马数字转化为阿拉伯数字

‘‘‘

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

if one_str==‘0‘:

return 0

else:

res=0

for i in range(0,len(one_str)):

if i==0 or define_dict[one_str[i]]<=define_dict[one_str[i-1]]:

res+=define_dict[one_str[i]]

else:

res+=define_dict[one_str[i]]-2*define_dict[one_str[i-1]]

return res

if __name__ == ‘__main__‘:

print (‘**************将罗马数字转化为阿拉伯数字**************‘)

one_str_list=[‘DII‘,‘XV‘,‘MDCLXVI‘,‘XII‘,‘VIII‘,‘XCIX‘,‘XII‘]

for one_str in one_str_list:

print (one_str,‘----->‘,transform_roman_num2_alabo(one_str))

print(‘**************将阿拉伯数字转化为罗马数字**************‘)

one_num_list=[2,0,1,9,1,2,1,0]

for one_num in one_num_list:

print(one_num,‘----->‘,transform_alabo2_roman_num(one_num))

从百度找的代码,验证后正确,但由于没有编程基础,未能理解这段代码。

原文地址:https://www.cnblogs.com/pogbar/p/11688922.html

时间: 2024-10-12 09:29:22

罗马数字转阿拉伯数字的相关文章

58. 分析、测试与总结:罗马数字和阿拉伯数字的转换[roman to integer and integer to roman in c++]

[本文链接] http://www.cnblogs.com/hellogiser/p/roman-to-integer-and-integer-to-roman.html [题目] 给出一个罗马数字,转换为阿拉伯数字.本题只考虑3999以内的数. 罗马数字有如下符号: Ⅰ(1)Ⅴ(5)Ⅹ(10)L(50)C(100)D(500)M(1000) 计数规则: (1).若干相同数字连写表示的数是这些罗马数字的和,如III=3: (2).小数字在大数字前面表示的数是用大数字减去小数字,如IV=4: (3

LeetCode 13.Roman to Integer 罗马数字转阿拉伯数字

对于罗马数字转阿拉伯数字切入点有两个: 1.小数字出现在大数字前面只能使用一个(例如IV正确,IIV就是错误的) 2.除了情况1之外直接使用累加就ok 1 public int romanToInt(String s){ 2 if(s.length() < 1){ 3 return 0; 4 } 5 int result = 0; 6 for(int i=0;i<s.length();i++){ 7 result += getRomanValue(s.charAt(i)); 8 if(i<

罗马数字与阿拉伯数字相互转换

罗马数字规则简明 1. 罗马单个数字共有7个,即I(1).V(5).X(10).L(50).C(100).D(500)和M(1000)2.一个罗马数字重复几次,就表示这个数的几倍.但同一数码不能出现三次以上.3.遵循右加左减的规则.左减的数字有限制,仅限于I.X.C.比如45不可以写成VL,只能是XLV但是,左减时不可跨越一个位数.比如,99不可以用IC(100 - 1)表示,而是用XCIX([100 - 10] + [10 - 1])表示.(等同于阿拉伯数字每位数字分别表示.)左减数字必须为一

Leetcode——罗马数字和阿拉伯数字的转换

说实话,这两道在leetcode上标记为中等和简单的题却让我蛋疼了半天.可能是因为先天对阿拉伯数字不熟悉的关系,所以在做两道题的居然没有一点感觉!!!!! 将罗马数字转化为阿拉伯数字比较简单:从左向右扫描整个字符串既可,只有在前一个数字比后一个数字小的时候需要做特殊处理(需要做减法). class Solution  { public: int romanToInt(string s) { if (s.empty()) { return 0; } int letter[256]; for (in

罗马数字转为阿拉伯数字

1 /* I:1 ; V-5;X-10;L-50;C-100;D-500;M-1000*/ 2 class Solution{ 3 vector<string> tokens; 4 vector<char> token_value; 5 public: 6 /*divide the string into some tokens,every token including same char*/ 7 void token(string s) 8 { 9 string::iterat

[leetcode]罗马数字和阿拉伯数字相互转换

罗马转阿拉伯 public int romanToInt(String s) { /* 从左到右依次根据哈希表进行加法 如果是"CM"900这种情况就要执行+M和-C处理 */ if (s.length()==0) return 0; Map<Character,Integer> map = new HashMap<>(); map.put('I', 1); map.put('V', 5); map.put('X', 10); map.put('L', 50);

罗马数字

罗马数字是最古老的数字表示方式,比阿拉伯数字早2000多年,起源于罗马 罗马数字有如下符号: 计数规则: 1.相同的数字连写,所表示的数等于这些数字相加得到的数,例如:III = 3: 2.小的数字在大的数字右边,所表示的数等于这些数字相加得到的数,例如:VIII = 8; 3.小的数字,限于(I.X和C)在大的字数左边,所表示的数等于大数减去小数所得的数,例如:IV = 4; 4.正常使用时,连续的数字重复不得超过三次: 5.在一个数的上面画横线,表示这个数扩大1000倍(若只考虑3999以内

罗马数字的构造规则

罗马数字 罗马数字是古罗马时期的计数系统,也是最早的数字表示方式,多用于钟表.日历和章节编号.一般认为,罗马数字只用来计数而不作演算.像II,IV,VII,这些都是常见的罗马数字. 构造规则 罗马数字通过7个不同字母的重复或组合,能够表示出所有正整数(罗马数字中没有0). I   =  1 V  =  5 X  =  10 L  =   50 C  =  100 D  =  500 M =  1000 1.字母是可以叠加的. 如I 表示 1,II 表示 2,III 表示 3.VI 表示 6(V=

正则表达式 匹配罗马数字 并且返回匹配到的值

这两天楼主处理一个需求 要在很多字符串里面匹配出字符串中的罗马数字 还要取出这些罗马数字进行一系列的操作.在度娘上找了半天也没找到有用信息 还被很多错误的代码误导了 非常痛苦.好在最后各种努力 花了半天时间达到了想要的结果.现在在这里记录并分享一下.如果需要转载 请注明出处 写好传送门.thanks 这里分享一个网站 可以把阿拉伯数字转化为对应的罗马数字 没有上限 好用点赞加分享 http://www.zhongguosou.com/education_graduate_course_tools