罗马数字使用以下七个符号书写。
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
这些符号用于表示数以千计的数字。
罗马写20,可以用两个X拼成XX。 但是 XXXX 不等于 40。
40的罗马数字是XL。
相似地:
Symbol Value
IV 4
IX 9
XL 40
XC 90
CD 400
CM 900
本篇文章将介绍在 Python 中将整数转换为罗马数字。
在 Python 中将整数转换为罗马数字
以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。
roman_map = [(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')]
def into_roman(num):
res = ''
while num > 0:
for i, r in roman_map:
while num >= i:
res += r
num -= i
return res
num = int(input("Enter a number: "))
print(into_roman(num))
输出:
Enter a number: 42
XLII
在上面的示例中,roman_map 包含一个具有相应值和符号的列表。 res 是一个空字符串。
如果 num 的值大于零,则 while num > 0 运行循环。 罗马数字中没有零符号。
roman_map 中的 for i, r 遍历每个 (integer, roman) 对,直到找到第一个数字。
在 Python 中使用除法将整数转换为罗马数字
以下示例使用除法将用户输入的整数转换为罗马数字。
roman_map = { 1: 'I', 4: 'IV', 5: 'V', 9: 'IX', 10: 'X', 40: 'XL',
50: 'L', 90: 'XC', 100: 'C', 400: 'CD', 500: 'D', 900: 'CM', 1000: 'M'}
num = int(input("Enter a number: "))
# 13 integers in descending order
order = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
for i in order:
if num != 0:
quotient= num//i
# prints the roman numeral if the quotient is not zero
if quotient != 0:
for j in range(quotient):
print(roman_map[i], end="")
# update input number with a remainder
num = num%i
输出:
Enter a number: 42
XLII
在这种方法中,我们将输入整数按降序除以 13 个基本整数。 roman_map 是一个包含 13 个整数的字典,它们的罗马数字等价于键值对。
num 存储用户输入的整数。 顺序列表按降序存储 13 个整数。
输入数字除以顺序列表中的所有数字,直到商不为零。
如果商不为零且有余数,则在 num 中更新。 循环继续运行,我们得到了等价的罗马数字。
现在你应该知道如何在 Python 中将整数转换为罗马数字。 我们希望您觉得本文对您有所帮助。