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执行shell获取硬件参数写入mysql的方法
Dec 29 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
Python3安装Pymongo详细步骤
May 26 Python
Python3中类、模块、错误与异常、文件的简易教程
Nov 20 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
基于python实现KNN分类算法
Apr 23 Python
Python中正则表达式的用法总结
Feb 22 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
python requests使用socks5的例子
Jul 25 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
Python使用Pygame绘制时钟
Nov 29 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 #Python
OpenCV全景图像拼接的实现示例
opencv 分类白天与夜景视频的方法
python如何利用traceback获取详细的异常信息
Jun 05 #Python
Python异常类型以及处理方法汇总
Jun 05 #Python
Python OpenCV 彩色与灰度图像的转换实现
You might like
PHP函数in_array()使用详解
2014/08/20 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
JS实现简易计算器
2020/02/14 Javascript
python将图片文件转换成base64编码的方法
2015/03/14 Python
Python中__new__与__init__方法的区别详解
2015/05/04 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
django如何连接已存在数据的数据库
2018/08/14 Python
对Python 内建函数和保留字详解
2018/10/15 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
python的Jenkins接口调用方式
2020/05/12 Python
vscode调试django项目的方法
2020/08/06 Python
网游商务专员求职信
2013/10/15 职场文书
网络编辑职责
2014/03/01 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
学校政风行风整改方案
2014/10/25 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
会议新闻稿
2015/07/17 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS
python 多态 协议 鸭子类型详解
2021/11/27 Python