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输出指定月份日历的方法
Apr 23 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
Python logging管理不同级别log打印和存储实例
Jan 19 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
浅析Windows 嵌入python解释器的过程
Jul 26 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
Python Selenium模块安装使用教程详解
Jul 09 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 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
一个odbc连mssql分页的类
2006/10/09 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
javascript 日期常用的方法
2009/11/11 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
python快速查找算法应用实例
2014/09/26 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
python实现飞机大战
2018/09/11 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
python 图像平移和旋转的实例
2019/01/10 Python
python实现移位加密和解密
2019/03/22 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
求职自荐信格式
2013/12/04 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
迁户口计划生育证明
2014/10/19 职场文书
学校国庆节活动总结
2015/03/23 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript