罗马数字转阿拉伯数字

罗马数字转阿拉伯数字

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

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

2.将学号20191204转为罗马数字(因罗马数字没有0,此处将其空出)

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

代码如下:

def transform_alabo2_roman_num(one_num):
     num_list=[1000900500400100905040109541]
     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,0,4]
    for one_num in one_num_list:
        print(one_num,'----->',transform_alabo2_roman_num(one_num))
 
备注:因能力有限无法做出输入数字然后输出的形式,先只能通过修改代码中的值来改变。
    

 

原文地址:https://www.cnblogs.com/lhpshuaibi/p/11670492.html