罗马数字转阿拉伯数字

罗马数字转阿拉伯数字

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

答:不是;缺点为形式、书写不便,缺少零。

 

2.将学号20201210转为罗马数字:

2 -----> II
0 ----->
2 -----> II
0 -----> 
1 -----> I
2 -----> II
1 -----> I
0----- >

3.程序大致如下:

 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,2,0,1,2,1,0]

 

    for one_num in one_num_list:

 

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

参考百度中已有代码,研究后大致理解。

 

原文地址:https://www.cnblogs.com/wxMing/p/13835438.html