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

  昨天,写了一个将罗马数字转换成阿拉伯数字的过程,今天来写一个反过程吧,将阿拉伯数字转化成罗马字符串
实现原理很简单,一看就能明白的,将数字先拆分成一个一个的小于10的数字,然后在各自转换则可。

PythonCode:
def numToRomanNum(Num):
 """digital will be converted into Roman numerals,Ex: numToRomanNum(3999)"""
     if Num < 1 or Num > 3999:
         print 'The Num must in 1-3999'
     else:
         NumDic = {
             '1':('I','IV','V','IX'),
             '2':('X','XL','L','XC'),
             '3':('C','CD','D','CM'),
             '4':('M')
             }
         items = sorted(NumDic.items())
         retstr = ''
         for item in items:
             str = ''
             (Num,modNum) = divmod(Num,10)
             if modNum != 0:
                 if item[0] != '4':
                     if modNum <= 3:
                         while modNum > 0:
                             str = str.join(['',item[1][0]])
                             modNum -= 1
                     elif modNum < 5:
                         str = item[1][1]
                     elif modNum == 5:
                         str = item[1][2]
                     elif modNum < 9:
                         str = item[1][2]
                         while modNum > 5:
                             str = str.join(['',item[1][0]])
                             modNum -= 1
                     else:
                         str = item[1][3]
                 else:
                     while modNum > 0:
                         str = str.join(['',item[1][0]])
                         modNum -= 1
                 retstr = str.join(['',retstr])
         return retstr          

你可能感兴趣的:(c)