罗马数字转阿拉伯数字

Posted pogbar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了罗马数字转阿拉伯数字相关的知识,希望对你有一定的参考价值。

罗马数字转阿拉伯数字

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))

 

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

以上是关于罗马数字转阿拉伯数字的主要内容,如果未能解决你的问题,请参考以下文章

罗马数字转阿拉伯数字

Swift 字符串转数字

js阿拉伯数字转中文数字

罗马数字转阿拉伯数字

java 数字转大写汉字

Leetcode 1213:整数转罗马数字-罗马数字转整数