本文共 1508 字,大约阅读时间需要 5 分钟。
昨天,写了一个将罗马数字转换成阿拉伯数字的过程,今天来写一个反过程吧,将阿拉伯数字转化成罗马字符串
实现原理很简单,一看就能明白的,将数字先拆分成一个一个的小于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 |
转载地址:http://vesti.baihongyu.com/