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采用getopt解析命令行输入参数实例
Sep 30 Python
python 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
Python绘制的二项分布概率图示例
Aug 22 Python
Python分析彩票记录并预测中奖号码过程详解
Jul 09 Python
Python socket 套接字实现通信详解
Aug 27 Python
python 进程的几种创建方式详解
Aug 29 Python
Python List列表对象内置方法实例详解
Oct 22 Python
pandas factorize实现将字符串特征转化为数字特征
Dec 19 Python
如何在 Django 模板中输出 "{{"
Jan 24 Python
python语言实现贪吃蛇游戏
Nov 13 Python
python使用scapy模块实现ARP扫描的过程
Jan 21 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 #Python
OpenCV全景图像拼接的实现示例
opencv 分类白天与夜景视频的方法
python如何利用traceback获取详细的异常信息
Jun 05 #Python
Python异常类型以及处理方法汇总
Jun 05 #Python
Python OpenCV 彩色与灰度图像的转换实现
You might like
PHP的面向对象编程
2006/10/09 PHP
用文本作数据处理
2006/10/09 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
javascript常见用法总结
2014/05/22 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
python中的yield使用方法
2014/02/11 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
python 对象和json互相转换方法
2018/03/22 Python
python实现爬取图书封面
2018/07/05 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
python实现转圈打印矩阵
2019/03/02 Python
python中的句柄操作的方法示例
2019/06/20 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
vscode调试django项目的方法
2020/08/06 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
幼儿教师培训感言
2014/03/08 职场文书
和解协议书
2014/04/16 职场文书
教师辞职书范文
2015/02/26 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android