首页 > 解决方案 > 有人可以解释突出显示的代码吗?

问题描述

所以我尝试了这个我在网上找到的题为“Int to Roman Numerals”的练习。我想不通。问题是“编写一个 Python 程序将整数转换为罗马数字”。看了解决方案后,我明白了大部分。我只是不明白我在旁边发表评论的部分。如果有人可以解释逻辑,我将不胜感激。

class py_solution:
    def int_to_Roman(self, num):

        val = [
            1000, 900, 500, 400,
            100, 90, 50, 40,
            10, 9, 5, 4,
            1
            ]

        syb = [
            "M", "CM", "D", "CD",
            "C", "XC", "L", "XL",
            "X", "IX", "V", "IV",
            "I"
            ]

        roman_num = ''
        i = 0
        while  num > 0:
             for _ in range(num // val[i]): # what does this line do?
                 roman_num += syb[i] # what does this line do?
             num -= val[i] # what does this line do?
        i += 1
    return roman_num

标签: pythonpython-3.xpython-requests

解决方案


num // val[i]将做地板除法numval[i]例如:

>>> 5 // 2
2

将其放入range()意味着它将创建一个从 0 到该数字的迭代器。所以在上面的例子中,它会遍历数字0, 1(最后一个数字不包括在内,我们从 0 开始)。

roman_num += syb[i]将连接syb[i]roman_num并将结果分配给roman_num. 因此,如果曾经roman_num是,XII现在是。您可以使用“+”来连接(连接)字符串或添加数字。syb[i]Iroman_numXIII

num -= val[i]将取 的值num,将其递减,val[i]然后将结果分配给num。所以如果num是 5 和val[i]1,num就会变成 4。


推荐阅读