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实现将汉字转换成汉语拼音的库
May 05 Python
python实现xlsx文件分析详解
Jan 02 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
python文本数据相似度的度量
Mar 12 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
通过实例解析Python调用json模块
Dec 11 Python
MNIST数据集转化为二维图片的实现示例
Jan 10 Python
python实现连连看游戏
Feb 14 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 #Python
OpenCV全景图像拼接的实现示例
opencv 分类白天与夜景视频的方法
python如何利用traceback获取详细的异常信息
Jun 05 #Python
Python异常类型以及处理方法汇总
Jun 05 #Python
Python OpenCV 彩色与灰度图像的转换实现
You might like
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
Python 文件重命名工具代码
2009/07/26 Python
如何利用python查找电脑文件
2018/04/27 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
简单了解django orm中介模型
2019/07/30 Python
Python2与Python3的区别点整理
2019/12/12 Python
Python的pygame安装教程详解
2020/02/10 Python
python实现人脸签到系统
2020/04/13 Python
Python 合并拼接字符串的方法
2020/07/28 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
体育教师自荐信范文
2013/12/16 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
政风行风建设责任书
2014/07/23 职场文书
债务纠纷委托书
2014/08/30 职场文书
以权谋私检举信范文
2015/03/02 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电