python - 有人可以解释突出显示的代码吗?
问题描述
所以我尝试了这个我在网上找到的题为“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
解决方案
num // val[i]
将做地板除法num
。val[i]
例如:
>>> 5 // 2
2
将其放入range()
意味着它将创建一个从 0 到该数字的迭代器。所以在上面的例子中,它会遍历数字0, 1
(最后一个数字不包括在内,我们从 0 开始)。
roman_num += syb[i]
将连接syb[i]
到roman_num
并将结果分配给roman_num
. 因此,如果曾经roman_num
是,XII
现在是。您可以使用“+”来连接(连接)字符串或添加数字。syb[i]
I
roman_num
XIII
num -= val[i]
将取 的值num
,将其递减,val[i]
然后将结果分配给num
。所以如果num
是 5 和val[i]
1,num
就会变成 4。
推荐阅读
- reactjs - Reactjs:如何使用 Reactjs 在弹出按钮单击时从数据库中正确获取每个用户记录
- java - 如何向外部 Rest Api 发出 Http Post 请求?
- c - 什么是正常的 C getchar/putchar 行为?
- java - 为什么我的旧图标的背景不透明?
- swift - 是否可以让编译器将 VC 名称(来自字符串)视为该 VC 类型?
- python-3.x - 导入 tensorflow 时,出现以下错误:No module named 'numpy.core._multiarray_umath'
- knapsack-problem - 依赖选择的背包问题
- php - 同一产品内如何增加数量,如何减少数量?
- excel - 根据条件将特定单元格从工作表复制到工作表
- leaflet - 有人知道更多关于传单的 ALK Maps 插件吗?我想使用他们的地图,但我似乎找不到 api 密钥