本文实例讲述了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"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.jb51.net/zhuanhuanqi/all_zhuanhuanqi
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“Python实现将罗马数字转换成普通阿拉伯数字的方法”评论...
更新日志
2025年01月10日
2025年01月10日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]