本文实例讲述了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'
PS:这里再为大家提供一款换算工具供大家参考使用:
在线万能单位换算器flash版:
http://tools./zhuanhuanqi/all_zhuanhuanqi
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
# Python
# 罗马数字
# 转换
# 阿拉伯数字
# 数字转换
# Python实现中文数字转换为阿拉伯数字的方法示例
# python中将阿拉伯数字转换成中文的实现代码
# python实现将英文单词表示的数字转换成阿拉伯数字的方法
# Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
# Python将阿拉伯数字转换为罗马数字的方法
# Python使用cn2an实现中文数字与阿拉伯数字的相互转换
# python将中文数字转化成阿拉伯数字的简单方法
# 进阶
# 操作技巧
# 就会
# 相关内容
# 感兴趣
# 数据结构
# 给大家
# 写了
# 日常生活
# 转换成
# 现实生活
# 更多关于
# 中都
# 所述
# 各式各样
# 程序设计
# 使用技巧
# 再为
# 而不是
# 应该是
相关文章:
如何在宝塔面板中修改默认建站目录?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
如何在阿里云完成域名注册与建站?
如何注册花生壳免费域名并搭建个人网站?
如何在阿里云域名上完成建站全流程?
Python lxml的etree和ElementTree有什么区别
如何通过远程VPS快速搭建个人网站?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Python多线程使用规范_线程安全解析【教程】
如何通过服务器快速搭建网站?完整步骤解析
h5在线制作网站电脑版下载,h5网页制作软件?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
山东云建站价格为何差异显著?
如何在Windows 2008云服务器安全搭建网站?
c# 服务器GC和工作站GC的区别和设置
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何续费美橙建站之星域名及服务?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
如何在橙子建站中快速调整背景颜色?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
建站之星下载版如何获取与安装?
如何通过万网虚拟主机快速搭建网站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
建站之星微信建站一键生成小程序+多端营销系统
如何快速搭建虚拟主机网站?新手必看指南
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
建站为何优先选择香港服务器?
利用JavaScript实现拖拽改变元素大小
北京网站制作网页,网站升级改版需要多久?
贸易公司网站制作流程,出口贸易网站设计怎么做?
定制建站价位费用解析与套餐推荐全攻略
建站之星伪静态规则如何正确配置?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
建站之星免费版是否永久可用?
C++如何使用std::optional?(处理可选值)
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
Bpmn 2.0的XML文件怎么画流程图
南平网站制作公司,2025年南平市事业单位报名时间?
怎么将XML数据可视化 D3.js加载XML
Android自定义listview布局实现上拉加载下拉刷新功能
建站之星如何防范黑客攻击与数据泄露?
如何用AWS免费套餐快速搭建高效网站?
高端企业智能建站程序:SEO优化与响应式模板定制开发
*请认真填写需求信息,我们会在24小时内与您取得联系。