0

Project Euler で問題 8を実行しています。次にやりたいことは、キーが 1 ~ 1000 で、値が数字のそれぞれの int である dict を作成することです。

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 に答える