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

  昨天,写了一个将罗马数字转换成阿拉伯数字的过程,今天来写一个反过程吧,将阿拉伯数字转化成罗马字符串
实现原理很简单,一看就能明白的,将数字先拆分成一个一个的小于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          
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值