9

我刚刚开始使用python。有人可以解释以下代码片段的第 2 行吗?我不明白这`num`一点。我试图用一个 tick 替换反引号字符',但后来它坏了。只是对那条线的详细解释会很棒。

loop_count = 1000000
irn = ''.join([`num` for num in range(loop_count)])
number = int(irn[1]) * int(irn[10]) * int(irn[100]) * int(irn[1000]) * int(irn[10000]) * int(irn[100000]) * int(irn[1000000])
print number
4

2 回答 2

12

反引号是repr()内置函数的已弃用别名,因此第二行等效于以下内容:

irn = ''.join([repr(num) for num in range(loop_count)])

这使用列表推导来创建表示数字的字符串列表,然后使用''.join()将该字符串列表组合成单个字符串,因此这等效于以下内容:

irn = ''
for num in range(loop_count):
    irn += repr(num)

请注意,我repr()在这里使用的是与反引号一致的,但您通常会看到str(num)获取 int 的字符串表示形式(它们恰好是等价的)。

于 2012-12-12T20:35:21.093 回答
2
  1. for num in range(loop_count)遍历从零到 1,000,000 的所有数字
  2. numin backticks 使用该repr()函数将每个数字转换为字符串。
  3. ''.join(...)将所有这些字符串合并为一个,它们之间没有任何分隔符。
  4. irn = ...将结果存储在irn.
于 2012-12-12T20:34:29.230 回答