Python实现将罗马数字转换成普通阿拉伯数字的方法


Posted in Python onApril 19, 2017

本文实例讲述了Python实现将罗马数字转换成普通阿拉伯数字的方法。分享给大家供大家参考,具体如下:

罗马数字,我们在某些电视中或者现实生活中都曾经看到过,近日,学习Python时,也遇到了罗马数字的解说,于是顺便写了一个小程序来练习罗马数字到我们日常生活普通数字之间的转换的小函数。

首先,咱们了解一下,罗马数字的潜在法则,

在罗马数字中,利用7个不同字母进行重复或者组合来表达各式各样的数字。

I = 1
V = 5
X = 10
L = 50
C = 100
D = 500
M = 1000

其组合关系是:

上面的字符最多能同时连续的使用三次

比如:4,罗马数字就应该是IV,而不是IIII,超过三个组合时,就要使用低高组合,4就是I和V的组合,I表示1,V表示5

函数使用方法:

getRomanNum('MDCCCLXXXVIII')

就会获得1888

Python代码:

def getRomanNum(RomanStr):
 """Roman numerals will be converted into digital,RomanStr is a RomanString"""
   import re
   if re.search('^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$',RomanStr)!=None:
     NumDic = {"pattern":"","retNum":0}
     RomanPattern = {
       "0":('','','','M'),
       "1":('CM','CD','D','C',100),
       "2":('XC','XL','L','X',10),
       "3":('IX','IV','V','I',1)
       }
     i = 3
     NumItems = sorted(RomanPattern.items())
     for RomanItem in NumItems:
       if RomanItem[0] != '0':
         patstr = NumDic["pattern"].join(['',RomanItem[1][0]])
         if re.search(patstr,RomanStr) != None:
           NumDic["retNum"] += 9*RomanItem[1][4]
           NumDic["pattern"] = patstr
         else:
           patstr = NumDic["pattern"].join(['',RomanItem[1][1]])
           if re.search(patstr,RomanStr) != None:
             NumDic["retNum"] += 4*RomanItem[1][4]
             NumDic["pattern"] = patstr
           else:
             patstr = NumDic["pattern"].join(['',RomanItem[1][2]])
             if re.search(patstr,RomanStr) != None:
               NumDic["retNum"] += 5*RomanItem[1][4]
               NumDic["pattern"] = patstr
       if NumDic["pattern"] == '':
         NumDic["pattern"] = '^'
       tempstr = ''
       sum = 0
       for k in range(0,4):
         pstr = RomanItem[1][3].join(['','{']).join(['',str(k)]).join(['','}'])
         patstr = NumDic["pattern"].join(['',pstr])
         if re.search(patstr,RomanStr) != None:
           sum = k*(10**i)
           tempstr = patstr
       if tempstr <> '':
         NumDic["pattern"] = tempstr
       else:
         NumDic["pattern"] = patstr
       NumDic['retNum'] += sum
       i -= 1
     return NumDic['retNum']
   else:
     print 'String is not a valid Roman numerals'
Python 相关文章推荐
python的即时标记项目练习笔记
Sep 18 Python
python获取标准北京时间的方法
Mar 24 Python
Python使用xlrd模块操作Excel数据导入的方法
May 26 Python
Python定时执行之Timer用法示例
May 27 Python
Python中遍历列表的方法总结
Jun 27 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
python之拟合的实现
Jul 19 Python
使用Python进行防病毒免杀解析
Dec 13 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
python和js交互调用的方法
Jun 23 Python
python代码实现备忘录案例讲解
Jul 26 Python
Python实现GIF动图以及视频卡通化详解
Dec 06 Python
Python连接SQLServer2000的方法详解
Apr 19 #Python
Django自定义插件实现网站登录验证码功能
Apr 19 #Python
Python列表切片用法示例
Apr 19 #Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 #Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 #Python
浅析python递归函数和河内塔问题
Apr 18 #Python
Python使用正则表达式实现文本替换的方法
Apr 18 #Python
You might like
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
jquery选择器使用详解
2014/04/08 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
2015/11/17 Javascript
谈一谈javascript闭包
2016/01/28 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
基于javascript制作微博发布栏效果
2016/04/04 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
pytorch: Parameter 的数据结构实例
2019/12/31 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
信息学院毕业生自荐信范文
2014/03/04 职场文书
大学生学期个人总结
2015/02/12 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏