• 罗马数字转阿拉伯数字


    罗马数字转阿拉伯数字

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

     

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

  • 相关阅读:
    枚举类型总结
    正则表达式-Java
    java中Mongo
    cookie
    xsd解析
    水平分表的实现
    c#位运算小例子笔记
    c#设计模式之观察者模式(Observer Pattern)
    c#设计模式之代理模式(Proxy Pattern)
    .Net 数据缓存浅析
  • 原文地址:https://www.cnblogs.com/pogbar/p/11688922.html
Copyright © 2020-2023  润新知