Python简单实现阿拉伯数字和罗马数字的互相转换功能示例


Posted in Python onApril 17, 2018

本文实例讲述了Python实现阿拉伯数字和罗马数字的互相转换功能。分享给大家供大家参考,具体如下:

前面一篇介绍了《Java实现的求解经典罗马数字和阿拉伯数字相互转换问题》,这里来看看Python的实现方法。

题目很简单,如果之前也做过这种题目的话,相信对于什么是罗马数字就不会很陌生了,罗马数字是很古老的计数方法,现在的一些地方还有见到它的使用,下面简单贴两张维基百科的图片简单回顾一下罗马数字:

Python简单实现阿拉伯数字和罗马数字的互相转换功能示例

Python简单实现阿拉伯数字和罗马数字的互相转换功能示例

今天简单实现一下,阿拉伯数字和罗马数字之间的相互转化问题,很简单就不多说了,下面是具体的实现:

#!usr/bin/env python
#encoding:utf-8
'''''
__Author__:沂水寒城
功能:阿拉伯数字和罗马数字的互相转换
'''
def transform_alabo2_roman_num(one_num):
  '''''
  将阿拉伯数字转化为罗马数字
  '''
  num_list=[1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
  str_list=["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
  res=''
  for i in range(len(num_list)):
    while one_num>=num_list[i]:
      one_num-=num_list[i]
      res+=str_list[i]
  return res
def transform_roman_num2_alabo(one_str):
  '''''
  将罗马数字转化为阿拉伯数字
  '''
  define_dict={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
  if one_str=='0':
    return 0
  else:
    res=0
    for i in range(0,len(one_str)):
      if i==0 or define_dict[one_str[i]]<=define_dict[one_str[i-1]]:
        res+=define_dict[one_str[i]]
      else:
        res+=define_dict[one_str[i]]-2*define_dict[one_str[i-1]]
    return res
    # #下面这种写法也可以
    # for i in range(len(one_str)):
    #   if i > 0 and define_dict[one_str[i]] > define_dict[one_str[i - 1]]:
    #     res -= define_dict[one_str[i - 1]]
    #     res += define_dict[one_str[i]] - define_dict[one_str[i - 1]]
    #   else:
    #     res += define_dict[one_str[i]]
    # return res
if __name__ == '__main__':
  print '**************将罗马数字转化为阿拉伯数字**************'
  one_str_list=['DII','XV','MDCLXVI','XII','VIII','XCIX','XII']
  for one_str in one_str_list:
    print one_str,'----->',transform_roman_num2_alabo(one_str)
  print '**************将阿拉伯数字转化为罗马数字**************'
  one_num_list=[77,66,55,8,1200,34,65,3,21,99]
  for one_num in one_num_list:
    print one_num,'----->',transform_alabo2_roman_num(one_num)

结果如下:

Python简单实现阿拉伯数字和罗马数字的互相转换功能示例

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

Python 相关文章推荐
Python实现把回车符\r\n转换成\n
Apr 23 Python
理解Python中的绝对路径和相对路径
Aug 30 Python
对Python中的@classmethod用法详解
Apr 21 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
Python模块 _winreg操作注册表
Feb 05 Python
在python中修改.properties文件的操作
Apr 08 Python
django自带的权限管理Permission用法说明
May 13 Python
python使用Word2Vec进行情感分析解析
Jul 31 Python
tensorflow2.0教程之Keras快速入门
Feb 20 Python
Pytorch使用shuffle打乱数据的操作
May 20 Python
python3库numpy数组属性的查看方法
Apr 17 #Python
对python中的for循环和range内置函数详解
Apr 17 #Python
Numpy数组转置的两种实现方法
Apr 17 #Python
详解Django之auth模块(用户认证)
Apr 17 #Python
numpy中实现ndarray数组返回符合特定条件的索引方法
Apr 17 #Python
python中找出numpy array数组的最值及其索引方法
Apr 17 #Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 #Python
You might like
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
PHP4之真OO
2006/10/09 PHP
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
PHPMailer发送邮件
2016/12/28 PHP
简单的代码实现jquery定时器
2013/11/17 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
javascript实现获取服务器时间
2015/05/19 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
Angular 作用域scope的具体使用
2017/12/11 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
Python语言快速上手学习方法
2018/12/14 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
你所在的项目是如何确定版本号的
2015/12/28 面试题
人事部主管岗位职责
2013/12/26 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
敬老模范事迹
2014/05/21 职场文书
新闻发布会策划方案
2014/06/12 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
学生检讨书如何写
2014/10/30 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
golang中的struct操作
2021/11/11 Golang
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers