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

 更新时间:2021年06月05日 09:12:42   作者:Jlinkk  
这篇文章主要介绍了Python 将integer转化为罗马数(3999以内)的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用anaconda作为python的依赖库管理方法

    利用anaconda作为python的依赖库管理方法

    今天小编就为大家分享一篇利用anaconda作为python的依赖库管理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python导入模块包原理及相关注意事项

    Python导入模块包原理及相关注意事项

    这篇文章主要介绍了Python导入模块包原理及相关注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • PythonQT5打包exe线程使用

    PythonQT5打包exe线程使用

    本文介绍了使用Python和QT5打包EXE文件,并在其中使用线程,打包时需要修改spec文件以加载资源文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • Python使用Dask进行大规模数据处理

    Python使用Dask进行大规模数据处理

    在数据科学和数据分析领域,数据集的规模不断增长,传统的单机处理方式往往无法满足需求,为了解决这个问题,Dask应运而生,Dask是一个灵活的并行计算库,可以轻松地处理大规模数据集,本文将介绍Dask的基本概念、安装方法以及如何使用Dask进行高效的数据处理
    2024-11-11
  • CentOS 7下安装Python3.6 及遇到的问题小结

    CentOS 7下安装Python3.6 及遇到的问题小结

    这篇文章主要介绍了CentOS 7下安装Python3.6 及遇到的问题小结,需要的朋友可以参考下
    2018-11-11
  • 基于python爬取链家二手房信息代码示例

    基于python爬取链家二手房信息代码示例

    这篇文章主要介绍了基于python爬取链家二手房信息代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • PyQt5中QCommandLinkButton的详细教程与应用实战

    PyQt5中QCommandLinkButton的详细教程与应用实战

    在PyQt5中,QCommandLinkButton是一个特殊的按钮控件,它最初在Windows Vista中引入,并因其独特的外观和功能在GUI应用程序中得到了广泛应用,本教程将结合实际案例,详细介绍QCommandLinkButton在PyQt5中的用法,需要的朋友可以参考下
    2024-07-07
  • Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程

    Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程

    Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛,框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便
    2021-11-11
  • 解决Windows下python和pip命令无法使用的问题

    解决Windows下python和pip命令无法使用的问题

    这篇文章主要介绍了解决Windows下python和pip命令无法使用的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • python自动化测试之DDT数据驱动的实现代码

    python自动化测试之DDT数据驱动的实现代码

    这篇文章主要介绍了python自动化测试之DDT数据驱动的实现代码,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07

最新评论