0

我在 Project Euler 上做问题 8,我接下来要做的是创建一个 dict,其键范围为 1 - 1000,值是数字中的每个 int。

我尝试了各种方法,包括尝试使用 1-1001 的范围来创建键并嵌套 for 循环迭代数字,然后尝试 intDict[k] = j 其中 k 是范围循环中的数字,j 是数字循环中的数字,但不能似乎做对了。如何做到这一点?谢谢。

到目前为止我的代码:

def lrgProdOf5Numbers():
intDict = {}
highest = 0
f= open("1000dig.txt","r")
d = f.read()
f.close()
digits = [int(e) for e in str(d) ] #convert each number in string  to int
4

2 回答 2

1

*编辑

我懂了。您的文本文件是从问题中复制的一组数字。这应该有效。正如其他人提到的,我认为您可能只是错过了清除换行符。

with open('1000dig.txt', 'r') as f:
    num_string = ''.join((line.strip() for line in f.readlines()))

d = {i: digit for i, digit in enumerate(num_string)}

你是这个意思吗?

于 2013-10-15T16:54:51.870 回答
1

究竟是什么问题?你有任何错误吗?

如果您在列表理解中看到错误,您可能需要从 'd' 中删除换行符。

更新(基于 kobejohn 的回答和您的回答):

d = {i: digits[int(i)] for i in range(15)}
于 2013-10-15T16:56:26.847 回答