本文实例讲述了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:这里再为大家提供一款换算工具供大家参考使用:

希望本文所述对大家Python程序设计有所帮助。

罗马数字转换python_Python实现将罗马数字转换成普通阿拉伯数字的方法相关推荐

  1. 时间转换python_Python 日期与时间转换的方法

    问题 你需要执行简单的时间转换,比如天到秒,小时到分钟等的转换. 解决方案 为了执行不同时间单位的转换和计算,请使用 datetime 模块. 比如,为了表示一个时间段,可以创建一个 timedelt ...

  2. python里class转换_python实现class对象转换成json/字典的方法

    python实现class对象转换成json/字典的方法 发布于 2016-03-28 08:05:44 | 153 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是 ...

  3. 把英文转换成数字python_python实现将英文单词表示的数字转换成阿拉伯数字的方法...

    本文实例讲述了python实现将英文单词表示的数字转换成阿拉伯数字的方法.分享给大家供大家参考.具体实现方法如下: import re _known = { 'zero': 0, 'one': 1, ...

  4. Python将汉字数字转换成阿拉伯数字的方法

    Python将汉字数字转换成阿拉伯数字的方法 - 玩蛇网 http://www.iplaypy.com/code/base/b2600.html 用Python语言来为不同数字之间做转换之前就有介绍过 ...

  5. 如何把html转换pdf,怎么把html转换成pdf

    1.怎么将html格式文件转成pdf 1这个方法是我认为最简单.高效的,只要安装了360浏览器.火狐浏览器或谷歌浏览器就可以轻松实现.下面笔者以360浏览器为例,我们只要在浏览器的右上角点击" ...

  6. html表格转换为csv,python实现将html表格转换成CSV文件的方法

    python实现将html表格转换成CSV文件的方法 发布于 2015-11-18 16:53:39 | 155 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种 ...

  7. nodejs+html转换pdf,Nodejs 中将html转换成pdf文件

    Nodejs 中将html转换成pdf文件,Nodejs Convert html into pdf 1. 下载phantomjs.exe,将该文件放在根目录 2. 编写pdf.js文件(在githu ...

  8. php 图片单位转换,php如何把图片转换成二进制字符串

    php把图片转换成二进制字符串的方法:首先通过"$_FILES['file']['tmp_name'];"方法获取临时文件名:然后通过base64EncodeImage函数将图片文 ...

  9. python对象列表转换为字典_python实现class对象转换成json/字典的方法

    本文实例讲述了python实现class对象转换成json字典的方法.分享给大家供大家参考,具体如下: # -*- encoding: UTF-8 -*- class Student: name = ...

  10. 普通话转换成方言的语音识别方法

    普通话转换成方言的语音识别方法 [专利说明]普通话转换成方言的语音识别方法发明领域 [0001]本发明涉及一种方言学习过程中的语音翻译的方法,属于语言学习技术领域. [背景技术] [0002]方言,地 ...

最新文章

  1. 【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )
  2. virtualbox安装centos 6之增强工具
  3. nginx配置文件中location与root访问时的联系
  4. 感谢支持,超预期重印并加码
  5. .netCHARTING图表控件详细介绍及下载
  6. printf打印百分号%
  7. a股历史30年的大盘价_2020年7月30日大盘走势分析
  8. 索引-python核心技术-pyhui版
  9. MVC教程第一篇:准备工作
  10. python sql逐行读取数据库数据,使用python读取数据库中的内容 把爬虫爬到的内容,存储在mysql数据库中...
  11. Bootstrap 警告框的外观
  12. Selenium API-WebDriver 属性
  13. php 在线拍卖系统源码,php拍卖系统,源码
  14. 高中分班考试如何计算机,新高一生如何应对分班考?
  15. android srgb模式,一加3固件官方更新:加入屏幕边缘防误触和sRGB显示模式功能
  16. android 日期转星座,日期匹配星座,月日匹配星座,android 星座
  17. C语言基础常见计算题
  18. 淘宝鹊桥计算工具安卓版小程序
  19. 上海证券交易所国债买断式回购交易实施细则
  20. 使用exe4j打包exe文件

热门文章

  1. VirtualBox安装增强功能实现全屏
  2. matlab fvtool 滤波器频响
  3. 二、GAMIT解算之数据准备
  4. 牛顿雕像和墓地上镌刻着的两句话
  5. 离开学校后如何下载知网论文或外文论文
  6. 22. SCHEMA_PRIVILEGES
  7. 112家IT网络公司薪水一览表
  8. android苹果模拟器哪个好,mac安卓模拟器哪个好用?为你推荐网易mumu模拟器
  9. 工作后出国留学经历总结
  10. im即时通讯开发:群聊消息的已读未读功能