Python 如何将integer转化为罗马数(3999以内)


Posted in Python onJune 05, 2021

1,在Python中将integer数转化为罗马数

说明:在罗马数中(3999以内),和阿拉伯数字相似,可以把它分解为个位,十位,百位,千位,然后相加(我是这么认为的+_+),所以这样就简单了,只需把不同位数的基数表示出来相加即可。

例如:

阿拉伯数字为124=100+20+4,

罗马数字为字符串相加‘CXXIV'=‘C'+‘XX'+IV''

按此规律见代码分析:

注意:4,9,40,90,400,900得用大的减小的表示(因为相同字符相连不超过三个)

def trans(n):
    Dict = {0:'',1:'I',5:'V',10:'X',50:'L',100:'C',500:'D',1000:'M'}  #创建一个匹配字典,注意   0:‘'   是小细节,帮助处理位系数为0的情况
    num_str = str(n)
    s = ''
    for i in range(len(num_str)):  #按位次循环相加
        j = len(num_str)-1-i      #字符是从左到右,10**j表示所在位次 
        num = int(num_str[i])
        if num==0:  #
            s +=''
        else:
            N = num//5  #取整,用来判断是0+  还是5+, 还是5-,还是10-
            M = num%5 #取余,用来判断相同相连的个数,1-3用加,4用减
            if M==4:   #,9,40,90,400,900的情况
                s+=Dict[10**(j)]+Dict[(N+1)*5*10**(j)]   #右减左
            else:
                s+=Dict[N*5*10**(j)]+Dict[10**(j)]*M   #左加右
    return s

2,Python 给定一个整数,将其转为罗马数字

输入确保在 1 到 3999 的范围内

def change(text):    
    num=int(text)    
    # 数组内数据位置不要改,不然就不能从高位开始对比
    checkNum = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
    str =["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX","V", "IV", "I"]
    roman = ""
    i = 0
    #对比完,减去已对比数组,对比数组下个值
    while (num != 0) :
        if (num >= checkNum[i]):
            num -= checkNum[i]
            roman += str[i]
        else:
            i+=1
    return roman
def main():
    text = input("输入整数")
    print(change(text))
main()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之基本数据类型和变量声明介绍
Aug 29 Python
python制作花瓣网美女图片爬虫
Oct 28 Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
python编辑用户登入界面的实现代码
Jul 16 Python
Python socket实现多对多全双工通信的方法
Feb 13 Python
Python 实现try重新执行
Dec 21 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
Django实现后台上传并显示图片功能
May 29 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
Jun 18 Python
Python中rapidjson参数校验实现
Jul 25 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 #Python
OpenCV全景图像拼接的实现示例
opencv 分类白天与夜景视频的方法
python如何利用traceback获取详细的异常信息
Jun 05 #Python
Python异常类型以及处理方法汇总
Jun 05 #Python
Python OpenCV 彩色与灰度图像的转换实现
You might like
十天学会php(1)
2006/10/09 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
Easyui和zTree两种方式分别实现树形下拉框
2017/08/04 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
21行Python代码实现拼写检查器
2016/01/25 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
Python之循环结构
2019/01/15 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python切图九宫格的实现方法
2019/10/10 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
学校督导评估方案
2014/06/10 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
团组织推优材料
2014/12/29 职场文书
唐山大地震观后感
2015/06/05 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python