解决Python中罗马值与整数值的相互转换

编程入门 行业动态 更新时间:2024-10-19 04:27:23

解决Python中<a href=https://www.elefans.com/category/jswz/34/1416048.html style=罗马值与整数值的相互转换"/>

解决Python中罗马值与整数值的相互转换

1.问题:

创建一个以正整数为参数的函数,并返回一个包含该整数的罗马数字表示形式的字符串。现代罗马数字是通过从最左边的数字开始分别表示每个数字,跳过任何值为零的数字来编写的。用罗马数字表示1990:1000=M, 900=CM, 90=XC;导致MCMXC。将2008写成2000=MM, 8=VIII;或MMVIII。1666年按降序使用每个罗马符号:MDCLXVI。

Symbol     Value

   I               1

   V              5

   X             10

    L             50

    C            100

     D           500

     M           1,000

一:将数字转换成罗马值,根据上述的题目我们大致对这道题目应该有着自己的理解了,下面就开始上码了

def getroman(n):if n > 3999 or n < 1:return 0n_tuple = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]roman_tuple = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']result = ""for i in range(n_tuple):while n >= n_tuple[i]:n -= n_tuple[i]result += roman_tuple[i]return resulta=getroman(1001)
print(a)
num = int(input("please"))
# 确定个十百千各自位置上的0~9对应罗马字母
c = {'g': ('', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'),'s': ('', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'),'b': ('', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'),'q': ('', 'M', 'MM', 'MMM')
}
roman = []
# 用整除和取余获得个十百千对应的数字
roman.append(c['q'][num // 1000])
roman.append(c['b'][(num // 100) % 10])
roman.append(c['s'][(num // 10) % 10])
roman.append(c['g'][num % 10])print(''.join(roman))

第一种方法:主要是运用while循环的方法,让数字在两组给出的数列中进行判断,锻炼思维还行

第二种方法更加的直观,适用于刚学python,应用基础很好

二:数字转换成罗马值

话不多说直接上码

def getintsum(s):d = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}result = 0for i in range(len(s) - 1):if d[s[i]] < d[s[i + 1]]:print(d[s[i]])result -= d[s[i]]else:result += d[s[i]]result += d[s[len(s) - 1]]return result if 1 < result < 3999 else Falsea=getintsum("CMLXXXIV") #984
print(a)

调用了字典的方法,还是运用列表中的循环遍历筛选

 

更多推荐

解决Python中罗马值与整数值的相互转换

本文发布于:2023-07-28 22:06:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1336344.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:罗马   整数   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!