Python 中将整数转换为罗马数字的程序
pythonserver side programmingprogramming更新于 2026/1/20 5:00:17
假设我们有一个数字 num。我们必须将其转换为其等效的罗马数字。罗马数字包含如下符号和值 −
- "I" = 1
- "V" = 5
- "X" = 10
- "L" = 50
- "C" = 100
- "D" = 500
- "M" = 1000
这些符号通常按从大到小、从左到右的顺序书写,可以通过将所有符号的值相加来计算。但也有一些特殊情况,较低值的符号位于较高值的符号左侧,这表示从较高值中减去较低值。
这些就是此类情况的示例 −
- "I" 在"V" 之前,值为 4。
- "I" 在"X" 之前,值为 9。
- "X" 在"L" 之前,值为 40。
- "X" 在"C" 之前,值为 90。
- "C" 在"D" 之前,值为 400。
- "C" 在"M" 之前,值为 900。
在罗马数字中也有一些规则 −
- 没有符号重复超过 3 次。
- 符号"V"、"L"和"D"不重复。
因此,如果输入为 n = 1520,则输出将为"MDXX",因为"MDXX"表示 1000 + 500 + 10 + 10 = 1520。
为了解决这个问题,我们将遵循以下步骤 −
- res := 空字符串
- table = 包含此格式的对 (val, symbol) 的列表,其中 val 是值,symbol 是相关符号 [(1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), (100, "C"), (90, "XC"), (50, "L"), (40, "XL"), (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")]
- 对于表中的每一对 (cap, roman),执行
- d := floor of num/cap
- m := num mod cap
- res := res + roman * d
- num := m
- 返回 res
示例
让我们看看下面的实现以便更好地理解 −
def solve(num): res = "" table = [ (1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), (100, "C"), (90, "XC"), (50, "L"), (40, "XL"), (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I"), ] for cap, roman in table: d, m = divmod(num, cap) res += roman * d num = m return res num = 1520 print(solve(num))
输入
1520
输出
MDXX
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

