用Python将整数转换为罗马数字

罗马数字是用以下七个符号书写的。

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 ,是一个空白字符串。

while num > 0 ,如果num 的值大于零,则运行循环。罗马数字中没有零的符号。

for i, r in roman_map 循环每个(整数,罗马数字)对,直到它找到第一个数字。

要想获得详细的可视化代码,请运行这里的代码。

在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个整数及其罗马数字对的字典,key:value

num 储存了用户输入的整数。order 列表中按降序存储13个整数。

输入的数字被order 列表中的所有数字除以,直到商不为零。

如果商不为零且有余数,则在num 。循环继续运行,我们得到罗马数字的等值。

在这个链接中可以看到上述代码。

现在你应该知道如何在Python中把一个整数转换成它的罗马数字等值。我们希望这个教程对你有帮助。